在尝试使用动画推视图控制器时崩溃

问题描述:

我有代码存储对UINavigation控制器堆栈上的3个ViewController(比如类typeA)的引用,随后所有这些视图控制器都弹出堆栈。在尝试使用动画推视图控制器时崩溃

后来点击按钮后,我尝试按下2个viewcontrollers,然后为第三个视图控制器我使用下面的方法。

[self.navigationController.view.layer addAnimation:transition forKey:kCATransition]; 

导航发生这样 classTypeA VC1-- > classTypeA VC2 --> classTypeA VC3 --> "class TypeB VC" --> classTypeA VC1-- > classTypeA VC2 --> classTypeA VC3 --> "class TypeB VC" --> classTypeA VC1-- > classTypeA VC2 --> classTypeA VC3 --> "class TypeB VC"(它兑现在这一点)。

此代码工作得很好,当用户浏览慢,但如果用户点击按钮更快这与异常崩溃:

终止应用程序由于未捕获的异常 “NSInvalidArgumentException”的,理由是:“推进了同样的观点 控制器不止一次实例不支持“。

有人可以帮忙吗?

+0

添加您的语言标签是客观的C或SWIFT –

看起来你把一个在yourNavigationViewControllerviewcontroller的两个实例,从而推viewcontroller,如果你要删除实例之前,现在的这个样子 -

func RemoveViewControllersFromNavigationController(vcClass:AnyClass)->Void 
{ 

     let array = self.navigationController?.viewControllers 


     if array != nil 
     { 
      for aviewcontroller in array! 
      { 
       if aviewcontroller.isKindOfClass(vcClass) 
       { 
        self.navigationController?.viewControllers.removeAtIndex((self.navigationController?.viewControllers.indexOf(aviewcontroller))!) 
       } 
      } 

     } 

} 

调用上面的方法推你viewcontroller

let mainStoryboard = UIStoryboard(name: "Main", bundle: nil) 
      let vc = mainStoryboard.instantiateViewControllerWithIdentifier("EventDetailViewController") as! EventDetailViewController 
        RemoveViewControllersFromNavigationController(EventDetailViewController) 
      self.navigationController?.pushViewController(vc, animated: true) 
+0

请看看问题,我试图推动3视图控制器相同的类型...您的代码只能用于当您只推e Viewcontroller,如果你想推送3个ViewController,它们具有相同的类类型但不同的实例? –