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

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

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

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


当前回答

打开viewController所在的故事板文件,或使用textEdit.app打开与XIB相关的文件,检查故事板或XIB名称是否与viewController相同,然后更改、保存并重新加载/重新启动Xcode。

其他回答

对我来说,问题是由调用initWithNibName:bundle:引起的。我使用nib文件中的表视图单元格来定义表视图中的条目表单。因为我没有一个观点,所以用一个观点是没有意义的。相反,如果我改为调用initWithStyle:方法,并从那里加载nib文件,那么事情就如预期一样。

在我的例子中,在***ViewController类中实现了指定的初始值设定项-(instancetype)initWithNibName:(NSString*)nibNameOrNil捆绑包:(NSBundle*)nipBundleOrNil,因此即使我调用其他初始值设定器来初始化对象,也会调用指定的初始设置项。

因此,要解决这个问题,检查-(instancetype)initWithNibName:(NSString*)nibNameOrNil捆绑包:(NSBundle*)nipBundleOrNil是否也是一种正确的方法。

我的问题出在错误的课堂上。我使用custom.xib作为自定义视图。正确设置如下:

视图不应有类与.xib一起使用的类在文件的所有者选项卡中设置Outlets连接到文件的所有者,而不是视图。

我对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];
}

打开viewController所在的故事板文件,或使用textEdit.app打开与XIB相关的文件,检查故事板或XIB名称是否与viewController相同,然后更改、保存并重新加载/重新启动Xcode。