Joh*_*ohn 722 cocoa-touch interface-builder xib ios
我在项目中添加了一个新的nib文件,并尝试加载它.
但是,当我点击应该带我到我创建的视图的工具栏图标时,我得到一条NSInternalInconsistencyException
消息:
由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加载了"..."笔尖,但未设置视图插座.
所以我打开了我的nib文件,我看到没有设置引用插件的视图.但是,我尝试单击并将"新引用插座"的圆圈拖动到文件所有者,但它不会让我...我需要做什么才能显示我的视图?
Jos*_*ice 1763
你们是对的,但是因为我是一个新人,我花了一点时间才弄清楚要做的所有步骤.这对我有用:
Jav*_*ría 180
这是Josh Justice的提议,但是以图形方式(图片是我的):
最后,使用滚动代码实例化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];
Run Code Online (Sandbox Code Playgroud)
She*_*han 29
你确定你有一个UIView(或子类)分配给你的ViewController的"view"属性?
右键单击xib左侧窗格中的"文件所有者",查看yourViewController并验证是否设置了"视图"插座.如果没有,请将其设置为视图!
这肯定会解决问题
Nat*_*han 15
我对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];
}
Run Code Online (Sandbox Code Playgroud)
man*_*ate 10
对于使用xib方法创建UIView并遇到此问题的任何人,您会注意到在连接检查器菜单下您将没有"视图"插座.但是,如果您将文件所有者自定义类设置为UIViewController,然后您将看到"视图"插座,您可以通过CMND将插座连接到CustomView.
Bri*_*dig 10
我遇到这个问题的方式与这里的其他答案略有不同。
如果我只是创建了一个新的 xib 文件,在 Interface Builder 中向它添加了一个 UIViewController,并将该 UIViewController 的自定义类设置为我的视图控制器,则会导致“未设置视图插座”崩溃。这里的其他解决方案说控制拖动视图出口到视图,但对我来说视图出口是灰色的,我无法控制拖动它。
我发现我的错误是在 Interface Builder 中添加了一个 UIViewController。相反,我必须添加一个 UIView,并将文件所有者的自定义类设置为我的视图控制器。然后我可以控制拖动文件所有者的视图出口到我的新视图 UIView 并且一切正常。
小智 5
刚刚花了一个多小时试图找出为什么从笔尖启动视图属性时未在视图控制器中设置视图属性的原因。请记住在视图控制器的initWithNibName内部调用“ [super initWithNibName ...]”。
小智 5
我也遇到了同样的问题,我的问题是我向 ViewControllers 笔尖添加了其他本地化(英语),因此我的具有本地化德语的应用程序可以 \xc2\xb4t 找到具有本地化英语的笔尖!希望这对任何人都有帮助!
\n我只是把这个固定在我的。大项目,两个文件。一个是“ ReallyLargeNameView”,另一个是“ ReallyLargeNameViewController”
根据上面选择的第二个答案,我决定应该清理自己的构建。Nada,但我仍然怀疑XCode(因为我有两个相同的类,应该对它们进行抽象,但是……)所以,一个人在工作,一个人不在。文件的所有者名称已达到复制和粘贴的程度,重新命名了出口,重新启动了xCode,仍然一无所获。
因此,我删除了类似的命名类(这是一个视图)。很快,新错误“字面上的插座未连接”实际上是“ webView不是键值”等等……基本上是说“ Visual Studio更好”。无论如何...我删除了较小的命名文件,并且bam,它起作用了。
XCode被名称相似的文件所混淆。该项目足够大,需要重新启动,这可能是其中的一部分。
希望我能得到比“ XCode混乱”更多的技术答案,但是好了,xCode在这一点上变得非常混乱。不用困惑,就像我会帮助一个小孩一样。它现在可以工作,:)如果上述方法不能解决问题,则应该使他人受益。
永远记住要清理构建(也要删除模拟器)
我在意外删除 xib 引用并再次添加时遇到了同样的问题。我只是通过在文件所有者和视图之间建立连接来修复。还要确保您的 FilesOwner 的自定义类是您期望的 viewController。
之前的答案几乎为我解决了问题,但缺少最后一步。
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
Bundle(for: self.classForCoder).loadNibNamed("SampleView", owner: self, options: nil)
addSubview(contentView)
contentView.frame = self.bounds
contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
}
Run Code Online (Sandbox Code Playgroud)
现在将附加您添加的任何@IBOutlets。
干杯,理查德