Два ViewControllers - первый имеет х кнопок, второй имеет х меток - PullRequest
0 голосов
/ 08 января 2012

Я столкнулся с небольшой проблемой (не удивительно, потому что я только начал с xcode). Я пытался решить эту проблему с государственными чиновниками, но они явно ошиблись.

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

Я пытался решить эту проблему с помощью операторов тегов, например: 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 - Кто-нибудь знает, почему?

1 Ответ

1 голос
/ 08 января 2012

Вот небольшой удобный трюк для вас: теги .

Каждый UIView может иметь свойство tag. Это простое целое число, и вы можете назначить его в коде (button.tag = 456;) или в Интерфейсном Разработчике. В вашем 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 -файле), вы можете просто назначить эти свойства перед отправкой нового контроллера представления. Вот что мы сделали в приведенном выше фрагменте кода.

...