不支持多次推送同一个视图控制器实例?

时间:2010-01-11 14:00:21

标签: iphone

我有一个普通的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];

1 个答案:

答案 0 :(得分:4)

您不一定要在导航控制器上混合presentModalViewController和pushViewController。使用它们的原因各不相同。以下是view controller programming guide所说的内容:

  

最常见的是,应用程序使用模态   将控制器视为临时控制器   中断以获得关键   来自用户的信息。然而,   你也可以使用模态呈现   查看要实现的控制器   您的备用接口   在特定时间申请。

我有分层数据,通过使用-pushNavigationController显示连续的视图控制器来创建向下钻取:aniamted:。当错误消息显示您无法推送同一实例时,并不意味着您无法创建同一类的新实例。只需创建要推送的视图控制器的新实例。

如果您有一个特殊情况,您需要向用户提供一些与众不同的东西,请使用-presetnModalViewController: