我在项目中添加了一个新的nib文件,并尝试加载它。

然而,当我单击工具栏图标(该图标应将我带到我创建的视图)时,我会收到一个NSInternalInconstanceException,消息如下:

由于未捕获异常,正在终止应用“NSInternalInconstanceException”,原因:“-[UIViewController_loadViewFromNibNamed:bundle:]加载了“…”笔尖,但未设置视图出口

所以我打开了我的笔尖文件,看到了没有设置引用出口的视图。然而,我尝试单击并拖动“新引用出口”的圆圈到文件的所有者,但它不允许我……我需要做什么才能显示我的视图?


当前回答

我在意外删除xib引用并再次添加它时也遇到了同样的问题。我只是通过在文件所有者和视图之间建立连接来解决了这个问题。还要确保您的文件所有者的自定义类是您期望的viewController。

其他回答

未设置视图标识-类标识。将其设置为适当的类后,问题得到解决。

今晚我遇到了一个非常类似的东西,Swift UIViewController子类。在这种情况下,上述修复都不起作用,但重新排序我的代码确实起了作用。Net-Net,在同一文件中的子类定义本身之前出现子类的扩展似乎会混淆XCode,尽管编译很好;修复方法是将扩展放在子类的定义之后。

我已经在回答这个类似问题时发布了详细信息。

我遇到这个问题的方式与这里的其他答案略有不同。

如果我只是创建了一个新的xib文件,在Interface Builder中向其添加了一个UIViewController,并将该UIViewController的自定义类设置为视图控制器,则会导致“视图出口未设置”崩溃。这里的其他解决方案是控制将视图出口拖动到视图,但对我来说,视图出口是灰色的,我无法控制拖动它。

我发现我的错误是在Interface Builder中添加UIViewController。相反,我必须添加一个UIView,并将文件所有者的自定义类设置为视图控制器。然后我可以控制将文件所有者的视图出口拖动到我的新视图UIView中,一切都正常工作。

只是在我的项目中出现了相同的错误,但原因不同。在我的例子中,我的自定义UITableViewController类中有一个名为“View”的IBOutlet设置。我知道“视图”是特殊的,因为它是基类的成员,但我不认为视图(不同的情况)也会有问题。我猜Cocoa的某些区域不区分大小写,加载xib可能就是其中之一。所以我把它重命名为DefaultView,现在一切都好了。

我也有同样的问题,但需要一个稍微不同的解决方案。本例中的问题是文件所有者的类,而不是视图的类。要设置此选项,我必须单击Interface Builder窗口左下角的“向后播放”图标,然后出现隔离文件所有者、第一响应者和视图特征的选项。单击第一个(一个大的透明框),使我能够按照上面的建议设置其自定义类。