Ios “错误”;加载“文件”;XXXX“;nib,但未设置视图出口;,不使用界面生成器时

Ios “错误”;加载“文件”;XXXX“;nib,但未设置视图出口;,不使用界面生成器时,ios,simulator,Ios,Simulator,我在控制台上获得此日志: *由于未捕获的异常“NSInternalInconsistencyException”,正在终止应用程序,原因:'-[UIViewController _loadViewFromNibNamed:bundle:]加载了“AboutView”nib,但未设置视图出口 …当我用根视图控制器(属于类AboutViewController)实例化自定义UINavigationController子类并尝试以模式显示它时 我确实有一个关于viewcontroller的,但它是通过

我在控制台上获得此日志:

*由于未捕获的异常“NSInternalInconsistencyException”,正在终止应用程序,原因:'-[UIViewController _loadViewFromNibNamed:bundle:]加载了“AboutView”nib,但未设置视图出口

…当我用根视图控制器(属于类
AboutViewController
)实例化自定义UINavigationController子类并尝试以模式显示它时

我确实有一个关于viewcontroller的
,但它是通过编程创建视图的。没有关于视图的
类或相关的xib文件。事实上,整个项目中没有一个nib/xib文件

这个问题我在这里已经被问过好几次了,但都是由使用Interface Builder的人提出的(不是我的情况,因此没有适用的解决方案)

注意:这仅在5.0模拟器中发生;6.0模拟器,运行5.0.1、6.0的设备没有问题


发生了什么?

如何创建视图?您应该在
AboutViewController
loadView
方法中创建视图。您必须将创建的视图设置为
self.view=someView
我甚至不重写
-loadView
。只需
-viewDidLoad
(到布局子视图)。因此,应该调用-
loadView
的默认实现。(否
-initWithNib…
等)问题是没有视图,必须通过loadView.No中的NIB加载视图。每当引用
视图
属性时,就会调用
UIViewController
上的
-loadView
实现(超类),该属性为
nil
(尚未创建)。如果您没有做任何花哨的事情,可以选择不覆盖
-loadView
。此外,您不直接调用
-loadView
,而只是访问视图控制器的
视图
属性来触发该操作。嗯,是的,文档似乎对此并不清楚。我一直在基于非NIB的ViewController上实现它。但是,正如文档所述,它应该只创建一个空视图。我的猜测是这个模拟器有点奇怪。