2014-12-03 141 views
0

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

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

+2

请注意,您在标题中提到了swift,但将问题标记为目标-c – Josh 2014-12-03 11:19:44

+0

@Josh Nah,其不是obj-c。嗯,可以,但我假设他很快使用。他没有包含任何代码,所以我们不能说。 – 2015-05-04 04:57:51

回答

0

如果设置Controller3或Controller4作为导航控制器委托,那么你需要清除它在这些类的viewWillDisappear功能,否则你将最终获得一个无效的引用,这是什么原因造成你崩溃

+0

你如何清除它? – 2015-05-04 04:56:18

+0

将代理设置为零 – Paulw11 2015-05-04 04:58:43

+0

在哪个ViewControllers中清除它? – 2015-05-04 05:06:28

0

我遇到了这种类似的崩溃,所以我会分享什么是我的问题:

  1. 我已经创建了UIWebView的子类。
  2. 在我的故事板中,我将UIWebView拖放到画布上,并将其类改为我的子类。

这一切都工作。该应用程序已通过我们的QA团队,被业主所“接受”,并且我们准备将其推送到应用商店。

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

很好,我改变了我的子类从WKWebView继承,调整了我的内部类逻辑和.... splat。尝试继续使用该视图控制器将会像OP所述那样崩溃。

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

TL; DR

这个故事的寓意是,如果你有你的故事板一个子类的对象,它的祖先无法从工具箱中拖,那么你可能会在你Segue公司崩溃。