Swift:应用程序在segue期间崩溃

时间:2014-12-03 11:16:23

标签: ios iphone swift

我有3个视图控制器,我正在它们之间导航。当我打开我的应用程序时,我从Controller1开始,然后我可以使用它来导航到Controller2或Controller3。我可以单独导航到每个都很好,但是,在我转到Controller3后,返回到Controller1,然后尝试导航到Controller2,我得到一个代码= 1的EXC_BAD_ACCESS。根本没有给出异常或错误消息,它只需带我到我的AppDelegate文件并给我错误代码。

我不知道问题是什么,但似乎相关的一点是我将Controller3设置为导航控制器的委托。我有一个第四个导航控制器也被设置为委托,当我从1-> 4-> 1-> 2时产生相同的行为,就像1-> 3-> 1一样 - →2。我没有问题从1-> 4-> 1-> 3或1-> 3-> 1-> 4,仅在涉及2时。我不确定问题是否是代表,以及2未被设置为一个事实。再一次,我可以自己导航到它,但导航到其他2个子视图控制器之一后却没有。

2 个答案:

答案 0 :(得分:0)

如果您将Controller3或Controller4设置为导航控制器委托,那么您需要在这些类的viewWillDisappear函数中清除它,否则您将得到无效的引用,这就是导致崩溃的原因

答案 1 :(得分:0)

我遇到了同样的崩溃,所以我将分享这个问题对我来说:

  1. 我创建了一个UIWebView的子类。
  2. 在我的故事板中,我将一个UIWebView拖到画布上,并将它的类更改为我的子类。
  3. 这一切都奏效了。该应用程序已通过我们的QA团队,被业主“接受”,我们已准备好将其推送到应用程序商店。

    然后我被告知,“你不能使用UIWebView。你必须使用WKWebView。”

    很好,我改变了我的子类以继承WKWebView,调整了我的内部类逻辑,并且...... splat。试图切换到该视图控制器会像OP所指出的那样崩溃。

    问题是我的故事板:因为它试图实例化我的子类,它基本上是在尝试创建一个WKWebView,它不一定在Interface Builder中支持(我的朋友说它可能在以后的版本中可以,但我没有' t验证)。

    <强> TL; DR

    故事的寓意是,如果你的故事板上有一个子类对象,其祖先不能从工具箱中拖出来,那么当你离开时你可能会崩溃。