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

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

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

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


当前回答

我也有同样的问题,我的问题是我在ViewControllers笔尖上添加了另一个本地化(英语),所以我的本地化德语应用程序找不到本地化英语的笔尖!!希望这对任何人都有帮助!

其他回答

这是Josh Justice的提案,但以图形的方式(图片是我的):

选择文件所有者在右侧面板上选择自定义类。输入自定义类名

在右侧面板上选择出口拖动视图出口以查看组件

最后,使用滚动代码实例化视图控制器:

        PTFilterUserVC *aFilterUserVC = [[PTFilterUserVC alloc] initWithNibName:@"FilterVC" bundle:nil];

        //OPTIONAL.This is how 'I' am interested in present the view controller.
        [self.navigationController pushViewController:aFilterUserVC animated:YES];

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

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

对于使用xib方法创建UIView并遇到此问题的任何人,您都会注意到连接检查器菜单下没有“视图”出口。但是,如果您将File的Owners自定义类设置为UIViewController,那么您将看到“视图”出口,您可以通过CMND将出口连接到CustomView。

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

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

这将明确解决该问题