Передача заголовка кнопки в новый вид - PullRequest
0 голосов
/ 05 марта 2010

У меня есть кнопка на виде, которая при нажатии открывает другой второй вид.Я хочу установить метку на втором экране, чтобы она менялась в зависимости от метки кнопки, которая была нажатаЯ попытался передать (id) отправителя в моей функции switchViews, но это не работает.Пожалуйста, помогите!

Ответы [ 2 ]

0 голосов
/ 05 марта 2010

Проходящий отправитель должен работать. Просто приведите отправителя к UIButton * и возьмите title для состояния с titleForState :. Вот рабочий код:

- (void)applicationDidFinishLaunching:(UIApplication *)application {    
    [window makeKeyAndVisible];
    UIButton * myButton = [UIButton buttonWithType:UIButtonTypeRoundedRect];
    myButton.frame = CGRectMake(100, 100, 100,80);
    [myButton setTitle:@"test title" forState:UIControlStateNormal];
    [myButton addTarget:self action:@selector(myButtonClicked:) forControlEvents:UIControlEventTouchUpInside];
    [window addSubview:myButton];
}

- (void)myButtonClicked:(id)sender{
    UIButton * clickedButton = (UIButton *)sender;
    NSString * buttonTitle = [clickedButton titleForState:UIControlStateNormal];
    NSLog(@"title: %@",buttonTitle);
    UILabel * myLabel = [[UILabel alloc] initWithFrame:CGRectMake(100, 250, 100,80)];
    myLabel.text = buttonTitle;
    [window addSubview:myLabel];
}
0 голосов
/ 05 марта 2010

На вашем втором контроллере представления создайте UILabel как свойство, т.е.

@interface MyViewcontroller : UIViewController {
  UILabel *titleLabel;
}

@property (nonatomic, retain) IBOutlet UILabel *titleLabel;

и, в конструкторе интерфейсов, прикрепите его к метке, которую вы хотите изменить.

Затем в методе switchViews вашего первого контроллера, после создания второго представления, вы можете установить заголовок следующим образом:

...
MyViewController *newViewController = [[MyViewController alloc] initWithNibName:'something' bundle:nil];
newViewController.view.titleLabel.text = @"Your new title goes here";
...

Надеюсь, это поможет.

...