2012-01-08 1 views
0

Я столкнулся с небольшой проблемой (неудивительно, потому что я только начал с xcode). Я пытался решить это с помощью if-statemens, но они были явно неправильным способом.Два ViewControllers - у первого есть x кнопки, у второго есть x меток

Вот что я пытаюсь сделать: в первом ViewController у меня есть, например, 4 кнопки. Если пользователь нажимает первую кнопку, он переходит к ViewController2, и на этикетке указано «Вы нажали первую кнопку». Если пользователь нажимает вторую кнопку, он переходит в ViewController2, и на этикетке указано «Вы нажали вторую кнопку» и так далее.

Я попытался решить эту проблему с Tag отчетности, как: FirstViewController.m

- (IBAction)switch:(id)sender; 

{ 
UIButton *buttonPressed = (UIButton *)sender; 
SecondViewController *second =[[SecondViewController alloc] initWithNibName:nil bundle:nil]; 
[self presentModalViewController:second animated:YES]; 
second.buttonTag = buttonPressed.tag; 
[self.navigationController pushViewController:second animated:YES]; 
(button.tag = 9001); 


- (IBAction)switch2:(id)sender2; 

{ 
UIButton *buttonPressed = (UIButton *)sender2; 
SecondViewController *third =[[SecondViewController alloc] initWithNibName:nil bundle:nil]; 
[self presentModalViewController:third animated:YES]; 
second.buttonTag = buttonPressed.tag; 
[self.navigationController pushViewController:third animated:YES]; 
(button2.tag = 9002); 

А вот то, что я сделал в SecondViewController.m

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 

if (buttonTag == 9001) { 
    self.label1.text = [[NSString alloc] initWithFormat:@"Radnomtext"]; 
    self.label2.text = [[NSString alloc] initWithFormat:@"Randomtext"]; 
    self.label3.text = [[NSString alloc] initWithFormat:@"Randomtext?"]; 

if (buttonTag == 9002) { 
    self.label1.text = [[NSString alloc] initWithFormat:@"Radnomtext2"]; 
    self.label2.text = [[NSString alloc] initWithFormat:@"Randomtext2"]; 
    self.label3.text = [[NSString alloc] initWithFormat:@"Randomtext2?"]; 

Он всегда дает мне этикетки из ButtonTag 9001 - Кто-нибудь знает почему?

+0

Ваше «редактирование» - отдельный вопрос. Вы хотите сказать: '(buttonTag == 9001)'. Ваш единственный знак равенства присваивает buttonTag, а не проверку на равенство. Поэтому, когда выполнение переходит к 'if ((buttonTag = 9002))' buttonTag присваивается 9002, что верно. Поэтому он дважды меняет ваши метки. – NJones

+0

Вы правы, извините, но я не хотел открывать новый вопрос из-за этого. Я изменил его на ваше предложение, но теперь он отображает только метки из Tag 9001 :( – Blade

ответ

1

Предлагаем вам удобный для скачивания трюк: Теги.

Каждый UIView может иметь свойство tag. Это простое целое число, и вы можете назначить его в коде (button.tag = 456;) или в Interface Builder. В вашем методе switch, просто используйте:

-(IBAction)switch:(id)sender { 
    UIButton *buttonPressed = (UIButton *)sender; 
    // create the second view controller, e.g. 
    SecondViewController *secondViewController = [[SecondViewController alloc] init]; 
    // it should have an NSInteger @property e.g. "buttonTag" 
    secondViewController.buttonTag = buttonPressed.tag 
    [self.navigationController 
     pushViewController:secondViewController animated:YES]; 
    // if not using ACT: [secondViewController release]; 
} 

Так просто, чтобы убедиться: ваше заявление

это не не идти передать свойство или значение от одного к другому контроллеру вида

полностью ошибочно. Если новый контроллер представления имеет @property (который вы определяете в файле .h и @synthesize в файле .m), вы можете просто назначить эти свойства перед тем, как нажать новый контроллер представления. Это то, что мы сделали в приведенном выше фрагменте кода.

+0

Спасибо за ваш быстрый ответ. Как я уже сказал, я довольно новичок в этом и поэтому сделал и отредактировал startpost, потому что я не совсем понял: < – Blade

 Смежные вопросы

  • Нет связанных вопросов^_^