2013-02-16 84 views
0

按下按鈕時,我得到一個異常。 。這個按鈕與賽格瑞(故事板的部分相關聯中止 - 導航控制器消失

*** 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。

只有一件事情可能是不尋常的。我錯誤地拋出錯誤的視圖控制器可以從許多視圖控制器中尋找。但我用這個比這個更好,而且在其他所有情況下都能正常工作。

回答

0

現在我發現它後,花了我很長的時間把它釘在一起,並把所有的東西放在一起的問題。

在IB中,我從同一視圖的另一個按鈕複製了與此segue關聯的按鈕。從原來的複製中,剩下一個動作。這本來應該與其他按鈕相關IBAction爲方法進行一些業務邏輯,並呼籲

[self.navigationController popViewControllerAnimated:YES]; 

所以我再往下segueing並在大約同一時間返回到父視圖控制器! 自然不起作用。但是,我會把它留在這裏,以便可能有人遇到同樣的問題,找到比我更快的根本原因。