在尝试使用动画推视图控制器时崩溃
我有代码存储对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”的,理由是:“推进了同样的观点 控制器不止一次实例不支持“。
有人可以帮忙吗?
看起来你把一个在yourNavigationViewController
viewcontroller
的两个实例,从而推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)
前
请看看问题,我试图推动3视图控制器相同的类型...您的代码只能用于当您只推e Viewcontroller,如果你想推送3个ViewController,它们具有相同的类类型但不同的实例? –
添加您的语言标签是客观的C或SWIFT –