2013-02-16 64 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并在大约同一时间返回到父视图控制器! 自然不起作用。但是,我会把它留在这里,以便可能有人遇到同样的问题,找到比我更快的根本原因。