按下按鈕時,我得到一個異常。 。這個按鈕與賽格瑞(故事板的部分相關聯中止 - 導航控制器消失
*** Terminating app due to uncaught exception 'NSGenericException', reason: 'Could not find a navigation controller for segue 'changeRooms'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.'
調用堆棧沒有給出關於在異常被拋出暗示雖然試圖挖掘到它,我發現了內prepareForSegue如下:(ChooseRoomVC.m而segueing到視圖控制器RoomsListTVC.m)
NSLog (@"navController1: %@", self.navigationController);
NSLog (@"navController2: %@", [[segue destinationViewController] navigationController]);
創建輸出:
2013-02-16 15:41:57.201 Wohnungsprotokoll[1906:c07] navController1: (null)
2013-02-16 15:41:57.203 Wohnungsprotokoll[1906:c07] navController2: (null)
在該階段我排序預期destinationVie wController尚未分配導航控制器。這就是爲什麼我將它與其他視圖控制器的prepareForSegue中的狀態進行比較。他們都產生相同的輸出:(KeysEditVC.m - 從這裏它segued到ChooseRoomVC)
NSLog (@"navControllerx: %@", self.navigationController);
NSLog (@"navControllery: %@", [[segue destinationViewController] navigationController]);
輸出:
2013-02-16 15:41:52.181 Wohnungsprotokoll[1906:c07] navControllerx: <UINavigationController: 0xa22c5d0>
2013-02-16 15:41:52.182 Wohnungsprotokoll[1906:c07] navControllery: (null)
所以我內的viewDidLoad檢查self.navigationController(chooseRoomVC.m的)只是爲了看看是否有什麼地方出現問題,然後繼續看問題的視圖控制器。但是,這看起來很不錯:
NSLog (@"navController0: %@", self.navigationController);
輸出:
2013-02-16 15:41:52.212 Wohnungsprotokoll[1906:c07] navController0: <UINavigationController: 0xa22c5d0>
所以,很顯然,在執行我的視圖控制器(chooseRoomVC.m),不知何故和某處navigationController分配丟失。我沒有添加類似的NSLogs viewWillAppear和viewWillDisappear和無處不在self.navigationController設置正確。
我很樂意提供代碼或截圖等,但我不知道從哪裏開始。請告知:
只是爲了完整:我使用故事板和ARC,iOS 6.1,iOS模擬器以及iPhone設備,OS X 10.8.2上的xcode 4.6。
只有一件事情可能是不尋常的。我錯誤地拋出錯誤的視圖控制器可以從許多視圖控制器中尋找。但我用這個比這個更好,而且在其他所有情況下都能正常工作。