ViewController的出口视图第一个非零,然后从束加载时为零
我使用initWithNibName:bundle:
从一个包中加载一个UIViewController
。 如果我在它的viewDidLoad
设置了一个断点,我可以看到它的view
被设置了。 在Interface Builder中查看About.xib
时,我也可以看到这一点。
但是,一旦实际上第一次使用视图(根据我的应用程序的逻辑调用[self.navigationController pushViewController:viewController animated:YES]
),我得到这个错误:
*终止应用程序由于未捕获的exception“NSInternalInconsistencyException”,原因:' – [UIViewController _loadViewFromNibNamed:bundle:]加载了“关于”笔尖,但没有设置视图sockets。
这也是触发viewDidLoad
的调用。 所以显然在通话期间, view
首先是非零(应该是),而后来显然变成了零。
如果在调用之前立即在debugging器中inputpo [viewController view]
,我会得到这个错误(这大概只是同一症状的另一个表示):
错误:执行被中断,原因:内部的ObjCexception断点(-3)。进程已经返回到expression式求值之前的状态。
我怎样才能加载和使用视图控制器结合现有的导航栏,而不会遇到这些错误?
更新如果我从故事板(不一定是我的主要故事板)而不是从XIB文件加载视图控制器,问题显然消失。
在Xcode中查看xib文件时,在身份检查器中,是否将自定义子类设置为您查看控制器的类? 如果你设置了这个,那么去连接检查器,你会看到一个名为“view”的属性,只需将它拖到你的界面生成器的视图中,它就可以工作
我的猜测是,你重写了一些默认的UIViewController
行为,要么使其view
是一个weak
属性,一个奇怪的loadView
方法,或者只是没有调用一个你重写的方法super
。
另一个常见的错误是调用一个不匹配的super
方法(从awakeFromNib
调用super viewDidLoad
等),当你移动代码或尝试不同的事情后,可能会发生这种情况。