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

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

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

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


当前回答

对我来说,这里所说的一切https://stackoverflow.com/a/6395750/939501是真的,但还是抛出了错误,原因是我创建了一个名为ABCView的View类,然后删除了它。后来我添加了一个视图控制器作为ABCViewController,所以它在新的视图控制器中引用了旧的ABCView。我不得不删除ABCViewController并添加一个不同名称的新控件,这解决了我的问题。

谢谢

其他回答

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

如果您已经尝试了所有方法,但仍然出现此错误,请尝试从头开始重新创建类文件,但请记住选中“同时创建XIB文件”复选框。这将在单独创建这些文件时自动链接一些未链接的项目。创建后,您可以将所有内容剪切并粘贴到新的XIB上,它应该可以正常工作。

我发现这个问题特别是在Swift中单独创建文件。

我在Xcode 9.3中遇到了类似的问题,将“文件所有者”属性检查器下的“模块”设置为项目模块为我解决了这个问题。

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

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

我的问题是因为类文件夹中有一个没有视图集的重复笔尖。xcode似乎在为构建选择一个笔尖,然后在我下次构建项目时选择另一个。刚刚删除了另一个。看起来不错。多!