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

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

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

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


当前回答

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

其他回答

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

谢谢

这是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];

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

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

我刚把这个修好了。大型项目,两个文件。一个是“ReallyLargeNameView”,另一个则是“ReallyLargeNameViewController”

根据上面选择的第二个答案,我决定清理我的建筑。纳达,但我仍然怀疑XCode(因为我有两个相同的类,应该抽象它们,但呃……)所以一个在工作,一个不工作。文件的所有者名称只是复制和粘贴,出口重新查找,xCode重新启动,仍然一无所获。

所以我删除了类似的命名类(这是一个视图)。很快,新的错误“outlet inside not connected”字面意思是“webView not key value”等等。。。基本上说“Visual Studio更好”。无论如何我删除了较小的命名文件,砰,它起作用了。

XCode被类似的命名文件所混淆。而且这个项目足够大,需要重新启动一点,这可能是其中的一部分。

我希望我有一个比“XCode很困惑”更技术的答案,但好吧,XCode在这一点上很困惑。就像我帮助一个小孩一样。它现在起作用了,:)如果上述方法不能解决任何问题,应该会让其他人受益。

始终记得清理构建(通过删除模拟器)

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