我正在使用UIViewController
从包中加载initWithNibName:bundle:
。如果我在其viewDidLoad
中设置断点,我可以看到它已设置view
。在界面生成器中查看About.xib
时,我也可以看到这一点。
然而,一旦视图实际上是第一次使用(根据我的应用程序的逻辑调用[self.navigationController pushViewController:viewController animated:YES]
)我收到此错误:
* 由于未捕获的异常终止应用' NSInternalInconsistencyException',原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加载"关于"笔尖但未设置视图插座。'
这也是触发viewDidLoad
的调用。很明显,在通话过程中,view
首先是非零(应该是),后来显然再次变为零。
如果我在调用之前立即在调试器中键入po [viewController view]
,我会收到此错误(可能只是同一症状的另一个表示):
错误:执行被中断,原因:内部ObjC异常 断点(-3)..该过程已返回到之前的状态 表达评价。
如何将视图控制器与现有导航栏一起加载和使用,而不会遇到这些错误?
更新如果我从故事板(不一定是我的主故事板)而不是从XIB文件加载视图控制器,问题显然会消失。
答案 0 :(得分:3)
在Xcode中查看xib文件时,在身份检查器中,是否设置了自定义子类来查看控制器的类?如果你设置了它,然后转到连接检查器,你会看到一个名为“view”的属性,只需将它拖到“界面”构建器中的视图中它就可以工作
答案 1 :(得分:3)
我的猜测是你覆盖了一些默认的UIViewController
行为,要么使view
成为weak
属性,要么使用奇怪的loadView
方法,要么只是不调用{{1}在你的一个被覆盖的方法中。
另一个常见错误是调用不匹配的super
方法(从super
调用super viewDidLoad
等),当您移动代码或尝试不同的事情后,可能会发生这种情况。