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

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

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

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


当前回答

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

其他回答

以下是对我有用的:

打开导致问题的XIB文件单击左栏上的文件所有者图标(顶部的一个,看起来像一个黄色轮廓框)如果您没有看到右侧边栏,请单击工具栏中“视图”上方的第三个图标。这将显示右侧边栏在右侧边栏中,单击第四个选项卡——看起来有点像报纸的选项卡在顶部的“自定义类”下,确保类是与此视图对应的ViewController的名称。如果没有,请输入在右侧边栏中,单击最后一个选项卡,该选项卡看起来像一个带箭头的圆圈你应该看到“outlets”下面有“view”。将旁边的圆圈拖到左栏上的“view”图标上(底部的一个,看起来像一个白色正方形,有一个粗灰色的轮廓保存xib并重新运行

您确定为ViewController的“view”属性分配了UIView(或子类)吗?

右键单击ViewController的xib左侧窗格中的“文件所有者”,并验证是否设置了“视图”出口。如果没有,请将其设置为视图!

这将明确解决该问题

我想支持斯蒂芬·J。有些时候,X代码确实会感到困惑。我刚刚有过一次体验,我经常使用UI,并多次添加和删除了outlets。插座再也接不上电线了。我从来没有弄清楚具体的原因(我已经尝试了上面的所有解决方案),我只需要删除NIB并从头开始重新创建它,事实上,在NIB工作之前,它必须使用不同的名称。(XCode 4.6.1)为此浪费了几个小时。

我对XCode 4.6.3也有同样的问题。我一开始使用了两个名为MySettingsView.h和.m的文件,但为了支持MySettingsViewController.h而删除了它们,但尽管尝试了这里提到的大多数提示,它仍然不断出错,

2013-07-05 11:48:17.205 MyApp[39024:c07]***由于未捕获的异常“NSInternalUnconferencyException”而终止应用,原因:'-[UIViewController _loadViewFromNibNamed:bundle:]加载了“MySettingsView”笔尖,但未设置视图出口。'

它显然仍然“困惑”,试图加载MySettingsView.xib而不是MySettingsView Controller.xib。也许它的“照我的意思做”逻辑太花哨了。

所以我通过在MySettingsViewController.m中硬编码NIB/XIB名称来解决这个问题:

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
    self = [super initWithNibName:@"MySettingsViewController" bundle:nibBundleOrNil];
}

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