我在项目中添加了一个新的nib文件,并尝试加载它.
但是,当我点击应该带我到我创建的视图的工具栏图标时,我得到一条NSInternalInconsistencyException
消息:
由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加载了"..."笔尖,但未设置视图插座.
所以我打开了我的nib文件,我看到没有设置引用插件的视图.但是,我尝试单击并将"新引用插座"的圆圈拖动到文件所有者,但它不会让我...我需要做什么才能显示我的视图?
你们是对的,但是因为我是一个新人,我花了一点时间才弄清楚要做的所有步骤.这对我有用:
打开XIB文件导致问题
单击左侧栏上的文件所有者图标(顶部一个,看起来像一个黄色的方框)
如果您没有看到右侧边栏,请单击工具栏中"视图"上方的第三个图标.这将显示右侧边栏
在右侧边栏中,单击第三个选项卡 - 看起来有点像报纸的选项卡
在顶部的"自定义类"下,确保Class是应与此视图对应的ViewController的名称.如果没有,请输入它
在右侧边栏中,单击最后一个选项卡 - 看起来像一个带箭头的圆圈
您应该看到"outlet"下面带有"view".将旁边的圆圈拖到左侧栏上的"视图"图标(底部的一个,看起来像一个带有灰色粗轮廓的白色方块
保存xib并重新运行
这是Josh Justice的提议,但是以图形方式(图片是我的):
选择文件所有者
在右侧面板上选择自定义类.
输入自定义类名称
在右侧面板上选择oultets
拖动视图出口以查看组件
最后,使用滚动代码实例化View Controller:
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];
我通常可以通过重新创建File的Owner和视图之间的连接来解决它.按住Ctrl键从文件所有者拖动到View(在IB中),然后从弹出菜单中选择视图.
未设置View Identity - Class Identity.将其设置为适当的类后,问题得到解决.
你确定你有一个UIView(或子类)分配给你的ViewController的"view"属性?
右键单击xib左侧窗格中的"文件所有者",查看yourViewController并验证是否设置了"视图"插座.如果没有,请将其设置为视图!
这肯定会解决问题
我对XCode 4.6.3也有同样的问题.我已经开始使用一些名为的文件MySettingsView.h
,.m
但是删除了它们MySettingsViewController.h
,但是尽管尝试了这里提到的大多数提示,但它仍然存在错误,
2013-07-05 11:48:17.205 MyApp [39024:c07]***由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加载了"MySettingsView"笔尖但视图出口没有定."
它显然仍然"困惑",试图加载MySettingsView.xib而不是MySettingsView 控制器 .xib .也许它的"做我的意思"逻辑过于花哨.
所以我通过在MySettingsViewController.m中硬编码NIB/XIB名称解决了这个问题:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil { self = [super initWithNibName:@"MySettingsViewController" bundle:nibBundleOrNil]; }
对我来说,https: //stackoverflow.com/a/6395750/939501 所述的所有内容都是正确的,但仍然是抛出错误,原因是我创建了一个名为ABCView的View类,然后将其删除后我添加了一个视图控制器ABCViewController因此不知何故它在新的视图控制器中引用旧的ABCView,我不得不删除ABCViewController并添加一个具有不同名称的新的解决了我的问题.
谢谢
对于使用xib方法创建UIView并遇到此问题的任何人,您会注意到在连接检查器菜单下您将没有"视图"插座.但是,如果您将文件所有者自定义类设置为UIViewController,然后您将看到"视图"插座,您可以通过CMND将插座连接到CustomView.
我的问题是由于类文件夹中没有视图集的重复nib引起的.xcode似乎是为构建选择一个笔尖,然后在下次构建项目时选择另一个笔尖.刚刚删除了另一个.看起来不错.卫生署!
刚刚花了一个多小时试图找出为什么从笔尖启动视图属性时未在视图控制器中设置视图属性的原因。请记住在视图控制器的initWithNibName内部调用“ [super initWithNibName ...]”。
我只是把这个固定在我的。大项目,两个文件。一个是“ ReallyLargeNameView”,另一个是“ ReallyLargeNameViewController”
根据上面选择的第二个答案,我决定应该清理自己的构建。Nada,但我仍然怀疑XCode(因为我有两个相同的类,应该对它们进行抽象,但是……)所以,一个人在工作,一个人不在。文件的所有者名称已达到复制和粘贴的程度,重新命名了出口,重新启动了xCode,仍然一无所获。
因此,我删除了类似的命名类(这是一个视图)。很快,新错误“字面上的插座未连接”实际上是“ webView不是键值”等等……基本上是说“ Visual Studio更好”。无论如何...我删除了较小的命名文件,并且bam,它起作用了。
XCode被名称相似的文件所混淆。该项目足够大,需要重新启动,这可能是其中的一部分。
希望我能得到比“ XCode混乱”更多的技术答案,但是好了,xCode在这一点上变得非常混乱。不用困惑,就像我会帮助一个小孩一样。它现在可以工作,:)如果上述方法不能解决问题,则应该使他人受益。
永远记住要清理构建(也要删除模拟器)