ios – ViewController的出口视图首先是非零,然后从bundle加载时为nil

我正在从initWithNibName的bundle中加载一个UIViewController:bundle:.如果我在viewDidLoad中设置断点,我可以看到它的视图已设置.在Interface Builder中查看About.xib时,我也可以看到这一点.

然而,一旦视图实际上第一次使用(根据我的应用程序的逻辑调用[self.navigationController pushViewController:viewController animated:YES])我收到此错误:

* Terminating app due to uncaught exception ‘NSInternalInconsistencyException’,reason: ‘-[UIViewController
_loadViewFromNibNamed:bundle:] loaded the “About” nib but the view outlet was not set.’

这是也触发viewDidLoad的调用.很明显,在通话过程中,视图首先是非零的(应该是这样),后来显然再次变为零.

如果我在调用之前立即在调试器中键入po [viewController视图],我会收到此错误(这可能只是同一症状的另一个表示):

error: Execution was interrupted,reason: internal ObjC exception
breakpoint(-3).. The process has been returned to the state before
expression evaluation.

如何在不遇到这些错误的情况下将视图控制器与现有导航栏一起加载和使用?

更新如果我从故事板(不一定是我的主要故事板)而不是从XIB文件加载视图控制器,问题显然会消失.

解决方法

Xcode中查看xib文件时,在身份检查器中,是否设置了自定义子类来查看控制器的类?如果你设置了它,然后转到连接检查器,你会看到一个名为“view”的属性,只需将它拖到“界面”构建器中的视图中即可

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...