【发布时间】:2015-07-12 21:45:04
【问题描述】:
已经工作了很长时间,试图找到解决我崩溃的方法。不确定这是我的基本设计缺陷还是可以轻松修复的东西。
我的应用在 TabBarController 中嵌入了 NavigationController。当我从 NavigationController 的根视图控制器模态呈现视图时,它会毫无问题地呈现和关闭。
但是,在我从 NavigationController 的根 ViewController 向前导航到导航堆栈中并推送其他控制器然后返回到根 ViewController 之后,我再次尝试模态演示。这次它显示得很好,但是当我关闭它时,我的应用程序崩溃并出现 EXC_BAD_ACCESS 错误。
经过一段时间的调试,我发现当模态呈现的 ViewController 被解除时,它试图访问导航 Heiarchy 中已经被解除的 ViewController 并因此崩溃。尽管它是从导航堆栈的根视图控制器中呈现的。
这让我很伤心,想知道是否有人遇到过类似的事情。任何帮助将不胜感激。提前致谢。
这是发生在 AlertController 块中的演示:
let createNewMemoAction = UIAlertAction(title: "Create New Memo", style: .Default) { (action: UIAlertAction!) -> Void in
self.performSegueWithIdentifier("Segue To Create New Memo", sender: nil)
}
我正在使用展开来关闭 viewController。我尝试使用以下代码解除相同的错误:
@IBAction func cancelButtonPressed(sender: UIBarButtonItem) {
dismissViewControllerAnimated(true, completion: nil)
}
谢谢
【问题讨论】:
-
请分享您展示和关闭视图控制器的代码。
-
我可以看到模态视图的呈现视图控制器是tabbarcontroller。我不确定这是否是导致问题的原因或鉴于此问题如何解决。
-
刚刚编辑了呈现和关闭代码。从 AlertController Action 的块中呈现。
-
好的。使用 Zombie 我找到了罪犯。我已将 NavigationStack 中的第二个 ViewController 声明为 NavigationController 的委托。这就是为什么它在展开时被引用。只需删除该行即可解决问题!感谢那些评论和帮助的人。
标签: ios exc-bad-access modalviewcontroller navigationcontroller tabbarcontroller