我有一个普通的UIViewCOntroller(home),其中我有像
这样的IBAction方法- (IBAction)goto1:(id)sender
{
self. goto1Controller.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal;
[self presentModalViewController:self. goto1Controller animated:YES];
}
它工作正常。 goto1Controller是一个普通的UIViewcontroller,我在其中使用了一个动作 通过userdefined导航控制器,我通过它转到另一个控制器,如 在self.goto1Controller中
- (IBAction)goto2:(id)sender
{
[userdefNavController pushViewController:goto2Controller animated:YES];
[self presentModalViewController: userdefNavController animated:NO];
}
我从goto2Controller通过
回到goto1Controller [self dismissModalViewControllerAnimated:YES];
它工作正常......但是当我使用同样的方法([self dismissModalViewControllerAnimated:YES];)去家时我必须按两次... 并且当我从goto2Controller来的时候再次按 - (IBAction)goto2:(id)发送者 崩溃发生..错误也“不支持多次推送相同的视图控制器实例” 任何解决方案 我在我的viewdidload中有
userdefNavController = [[UINavigationController alloc] initWithRootViewController:self];
答案 0 :(得分:4)
您不一定要在导航控制器上混合presentModalViewController和pushViewController。使用它们的原因各不相同。以下是view controller programming guide所说的内容:
最常见的是,应用程序使用模态 将控制器视为临时控制器 中断以获得关键 来自用户的信息。然而, 你也可以使用模态呈现 查看要实现的控制器 您的备用接口 在特定时间申请。
我有分层数据,通过使用-pushNavigationController显示连续的视图控制器来创建向下钻取:aniamted:。当错误消息显示您无法推送同一实例时,并不意味着您无法创建同一类的新实例。只需创建要推送的视图控制器的新实例。
如果您有一个特殊情况,您需要向用户提供一些与众不同的东西,请使用-presetnModalViewController: