Переключение между контроллерами представления - PullRequest
1 голос
/ 20 декабря 2011

У меня есть три контроллера вида.Я использовал шаблон flipsideproject, а затем добавил еще один контроллер представления.

На первом контроллере вида есть кнопка, которая переходит ко второму контроллеру вида.На втором контроллере вида есть кнопка, которая возвращается к первому.При переключении между первой и второй эти кнопки всегда работают.

То же самое происходит со вторым и третьим контроллером вида.Когда я пытаюсь переключиться с первого на второе на третье, а затем обратно на первое, это не работает.

(1 -> 2 -> 3 -> 2 - / -> 1) MyНа плохо нарисованной диаграмме изображена ситуация.

У меня были все кнопки «назад», подключенные к заднему IBAction, что, по моему мнению, было проблемой.Затем я сделал еще один IBAction, но это не устранило проблему.

1-й контроллер вида = MainViewController 2-й VC = FlipSideViewController 3-й VC = ChooseAlarmSound

Это для перехода 2-> 1 (это проблема, я думаю. Иногда это работает)

- (IBAction)done:(id)sender 
{ 
   [self.delegate flipsideViewControllerDidFinish:self]; 
} 

Это для перехода 2-> 3

- (IBAction)chooseSound:(id)sender 
{ 
    ChooseAlarmSound *controller = [[[ChooseAlarmSound alloc] initWithNibName:@"ChooseAlarmSound" bundle:nil] autorelease]; 
    controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self presentModalViewController:controller animated:YES]; 
}

Это для перехода 3-> 2

- (IBAction)goBack:(id)sender 
{ 
    FlipsideViewController *controller = [[[FlipsideViewController alloc] initWithNibName:@"FlipsideViewController" bundle:nil] autorelease];
    controller.modalTransitionStyle = UIModalTransitionStyleCoverVertical; 
    [self presentModalViewController:controller animated:YES]; 
}

Ответы [ 2 ]

3 голосов
/ 21 декабря 2011

Вы представили свой третий VC (от 2 до 3), используя modalviewcontroller.Но затем вы попытались вернуться ко 2-му VC (с 3-го по 2-й), используя другой модальный VC.Это не позволит вам вернуться к предыдущему экземпляру второго VC.Вы должны использовать dismissmodalviewcontrolleranimated метод, чтобы сделать это.Для получения подробной информации об этом посетите сайт Apple на сайте класса modalviewcontroller.

0 голосов
/ 22 декабря 2011

Как подсказывает user523234, все, что вам нужно сделать, это вызвать

[self dismissModalViewControllerAnimated:YES]

в методе

- (IBAction)goBack:(id)sender 

контроллера третьего представления вместо того, что вы делаете,который создает другой экземпляр 2-го контроллера представления и представляет его.

Причина, по которой он сейчас не работает, заключается в том, что когда вы нажимаете кнопку «Готово» во втором контроллере представления, он вызывает

 - (IBAction)done:(id)sender 
{ 
   [self.delegate flipsideViewControllerDidFinish:self]; 
}

, который отправляет сообщение делегату второго контроллера представления, которыйне установил в случае, когда вы собираетесь от 3-> 2.

...