【发布时间】:2013-02-01 10:31:30
【问题描述】:
按下按钮时抛出异常。该按钮与 segue 相关联(故事板的一部分。
*** 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 同时转到视图控制器 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)
在那个阶段,我有点预计destinationViewController 还没有分配navigationController。这就是为什么我将它与其他视图控制器的 prepareForSegue 中的状态进行比较。它们都产生相同的输出:(KeysEditVC.m - 从这里它被连接到 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(chooseRoomVC.m 的)中检查了 self.navigationController,只是为了看看在继续到有问题的视图控制器时是否出了问题。但这看起来不错:
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。
只有一件事可能不寻常。抛出错误时我要连接的视图控制器可以从多个视图控制器中连接。但是我正在做的不仅仅是这个,它在所有其他情况下都可以正常工作。
【问题讨论】:
标签: ios uinavigationcontroller storyboard segue