Полагаю, это связано с вашим текущим viewcontroller, использующим - (IBAction)goToRootAndNavigateToViewController
, так или иначе теряющим свой контроль после срабатывания. Таким образом, делать последовательные заявления не работает.
На вашем месте я бы удостоверился, что нажатие экземпляра MyViewController
всегда выполняется на rootViewController
по вашему выбору, а не на текущем контроллере просмотра, который будет извлечен из UINavigationController
и, возможно, освобожден и освобожден .
Возможно, вы захотите добавить реализацию метода делегата, например, - (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
в вашем rootViewController
- (void)navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated {
// Check the right condition for pushing MyViewController...
// if it's YES...
MyViewController *mvc = [[MyViewController alloc] init];
[self.navigationController pushViewController:mvc animated:YES];
[mvc release];
}
В этой реализации вы можете нажать MyViewController
экземпляр. Одна вещь, которую вы должны сделать заранее, это использовать какой-то условный флаг, который убедится, что ситуация правильная для popToRootViewController
, затем нажмите MyViewController