2014-12-03 187 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公司崩潰。