Mar*_*uer 5 iphone uinavigationcontroller segue ios6
如果我的问题听起来对你们有些愚蠢,请原谅.我对iOS开发相对较新,但我必须为iOS6移植应用程序.该应用程序在iOS 5和XCode 4.3.2上运行良好,但我在iPhone 6.0模拟器上有一个奇怪的Xcode 4.5错误.加载初始屏幕后,我可以点击我想要的任何按钮,我收到错误:
`Terminating app due to uncaught exception 'NSGenericException', reason: 'Could not find a navigation controller for segue 'register'. Push segues can only be used when the source controller is managed by an instance of UINavigationController.`
Run Code Online (Sandbox Code Playgroud)
StartScreenViewController的prepareForSegue方法如下所示
if ([[segue identifier] isEqualToString:@"register"] || [[segue identifier] isEqualToString:@"forgotPassword"]) {
UINavigationController *navController = [[UINavigationController alloc] initWithRootViewController:[segue destinationViewController]];
appDelegate.window.rootViewController = navController;
}
Run Code Online (Sandbox Code Playgroud)
设置断点显示该方法仍然被称为corectly,但在prepareForSegue完成后,应用程序崩溃并出现上述错误.有人能指出我正确的方向吗?
非常感谢马丁
因为你正在使用push segue Cocoa在StartScreenViewController 的层次结构中寻找一个祖先的导航控制器.
prepareForSegue:您可以配置即将由iOS自动显示的VC.显示 VC 不是您的责任,这是您在设置window.rootViewController时似乎正在执行的操作.
您可能需要阅读这些文档:http://developer.apple.com/library/ios/#featuredarticles/ViewControllerPGforiPhoneOS/Introduction/Introduction.html
您可以说"应用程序运行正常",但事实是您引用的代码总是非常错误,所以现在似乎已经暴露了这种错误.您永远不应该在应用程序中间更改窗口的根视图控制器; 你应该在发布时设置一次,而不是再次设置它.并且,正如Joshua正确地说的那样,准备一个segue不是让你弄乱视图控制器结构的时候,而segue本身就要捣乱.
你的手上有一个篮子盒子.在你采取另一个步骤之前,停止并理解iOS和视图控制器(以及故事板)可能是一个好主意,因为你可能最终会撕掉这个应用程序的整个架构以使其正确.这里有一些帮助:
http://www.apeth.com/iOSBook/ch19.html
| 归档时间: |
|
| 查看次数: |
7253 次 |
| 最近记录: |