我在项目中添加了一个新的nib文件,并尝试加载它。
但是,当我点击应该带我到我创建的视图的工具栏图标时,我得到一个带有消息的NSInternalInconsistencyException
:
由于未捕获的异常'NSInternalInconsistencyException'终止应用程序,原因:' - [UIViewController _loadViewFromNibNamed:bundle:]加载了“...”笔尖,但未设置视图插座。
所以我打开了我的nib文件,我看到没有设置引用插件的视图。但是,我尝试单击并将“新引用插座”的圆圈拖动到文件所有者,但它不会让我...我需要做什么才能显示我的视图?
你们是对的,但由于我是新人,我花了一点时间才弄清楚要做的所有步骤。这对我有用:
花了不止一个小时试图找出为什么我的视图属性没有在从nib启动它时在我的视图控制器中设置。记得在视图控制器的initWithNibName中调用“[super initWithNibName ...]”。
我刚刚修好了。大项目,两个文件。一个是“ReallyLargeNameView”,另一个是“ReallyLargeNameViewController”
基于上面选择的第二个答案,我决定要清理我的构建。 Nada,但我仍然怀疑XCode(因为我有两个相同的类,应该抽象它们但是......)所以一个人正在工作,一个人没有。文件的所有者名称是复制和粘贴,插座重新挂起,xCode重新启动,仍然没有。
所以我删除了类似的命名类(这是一个视图)。很快,新的错误“插座内部没有连接”字面上是“webView不是键值”等等......基本上说“Visual Studio更好”。无论如何...我删除了较小的命名文件,而bam,它的工作原理。
XCode被类似命名的文件所困惑。而且该项目足够大,需要重新启动,这可能是其中的一部分。
希望我有一个比“XCode感到困惑”更具技术性的答案,但是,xCode在这一点上变得很混乱。像我帮助一个小孩一样解除困惑。它现在有效,:)如果上面没有解决任何问题,应该让其他人受益。
永远记得清理你的构建(通过删除模拟器)
我也有同样的问题,我的问题是我添加了一个其他本地化(英语)到ViewControllers笔尖所以我的本地化德语的应用程序无法找到本地化英语的笔尖!希望这对任何人都有帮助!
我不小心删除了xib引用时遇到了同样的问题并再次添加它。我只是通过在Files owner和view之间建立连接来修复。还要确保你的FilesOwner的自定义类是你期望的viewController。
对我来说,问题是由调用https://stackoverflow.com/a/6395750/939501引起的。我正在使用来自nib文件的表格视图单元格来定义位于initWithNibName:bundle:
上的条目表单。因为我没有观点,所以挂钩到一个没有意义。相反,如果我改为调用tableViews
方法,并在那里,我加载nib文件,然后事情按预期工作。
我有同样的问题,但需要一个稍微不同的解决方案。这种情况下的问题是文件所有者的类,而不是视图的类。要设置它,我必须单击Interface Builder窗口左下角的“向后播放”图标,然后出现选项,隔离文件所有者,第一响应者和视图的特征。单击第一个(一个大的透明框),使我能够按照上面的建议设置其自定义类。
我有同样的问题,但需要一个不同的解决方案。在这种情况下的问题是文件所有者的类没有连接到xib文件。
今晚我遇到了一个非常相似的东西,有一个Swift UIViewController子类。在这种情况下,上述修复都没有奏效,但重新排序了我的代码。 Net-net,子类的扩展发生在子类的定义本身在同一个文件中似乎混淆了XCode,尽管编译正常;修复是将扩展放在子类的定义之后。
我发布了详细信息initWithStyle:
。
在我的例子中,*** ViewController类中的指定初始化器in an answer to this similar question已经实现,所以即使我在调用其他初始化器来初始化对象时,也会调用指定的初始化器。
所以要解决这个问题,检查qazxsw poi是否也是一种正确的方法。
在我的项目中遇到了同样的错误,但原因不同。在我的例子中,我的自定义UITableViewController类中有一个名为“View”的IBOutlet设置。我知道“视图”很特别,因为它是基类的成员,但我不认为View(不同的情况)也是一个问题。我猜Cocoa的某些区域不区分大小写,并且可能加载xib是其中一个区域。所以我只是将它重命名为DefaultView,现在一切都很好。
这是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];
选择文件所有者并转到打开标识检查器,给出它对应的类名。如果上述方法都不起作用,仍然无法看到视图插座,则将新的参考插座连接到文件所有者,然后您就可以看到视图插座。单击视图插座以在View Outlet和File的所有者之间建立连接。运行应用程序这很好。
我想要第二个Stephen J.有时X Code会让我感到困惑。我刚刚有过一次体验,我曾经玩过很多UI,并且已经添加和删除了很多次。这些网点不再接线了。我从来没有弄清楚具体的原因(我已经尝试了上面的所有解决方案),我只需要删除NIB并从头开始重新创建它,事实上它必须在它工作之前使用不同的NIB名称。 (XCode 4.6.1)浪费了几个小时。
就我而言,视图没有在xib中查看。在xib中,View是size = none(右手第4个选项卡)。我将大小设置为Freeform并重新加载xCode。视图被上诉,我设置了View的正确链接。
如果您已经尝试了所有内容但仍然遇到此错误,请尝试从头开始重新创建类文件,但请记住选中“还创建XIB文件”复选框。这将在单独创建这些文件时自动链接一些未链接的项目。创建完成后,您可以将所有内容剪切并粘贴到新的XIB上,它应该可以正常工作。
我发现这个问题特别是在Swift中单独创建文件。
对我来说,它发生了,何时
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
哪里
- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
这里loadView丢失,,,添加此行解决了我的问题。
我有同样的问题,我想通了,这是因为我在“内容”选项下的“表视图”属性中勾选了“静态单元格”。工作时改为“-(void)initCheckView{
CheckView *pCheckViewCtrl = [CheckView instance];
pCheckView = [pCheckViewCtrl view];
[[self view]addSubview:pCheckView];
[pCheckViewCtrl performCheck];
}
”。屏幕截图如下。 +(CheckView *)instance{
static CheckView *pCheckView = nil;
static dispatch_once_t checkToken;
dispatch_once(&checkToken, ^{
pCheckView = [[CheckView alloc]initWithNibName:@"CheckView" bundle:nil];
if ( pCheckView){
[pCheckView initLocal];
**[pCheckView loadView];**
}
});
return pCheckView;
}
我在Xcode 9.3中遇到了类似的问题,并在“文件所有者”属性检查器下将“模块”设置为项目模块,为我修复了这个问题。
我通常可以通过重新创建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 Controller.xib。也许它的“做我的意思”逻辑过于花哨。
所以我通过在MySettingsViewController.m中硬编码NIB / XIB名称解决了这个问题:
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:@"MySettingsViewController" bundle:nibBundleOrNil];
}
对我来说,这里陈述的所有事情都是真的,但仍然是抛出错误,原因是我创建了一个名为ABCView的View类,然后将其删除后我添加了一个视图控制器作为ABCViewController,所以不知怎的它在新视图中引用了旧的ABCView控制器,我不得不删除ABCViewController并添加一个具有不同名称的新问题解决了我的问题。
谢谢
我的问题是由于类文件夹中没有视图集的重复nib引起的。 xcode似乎在为构建选择一个笔尖,然后在下次构建项目时选择另一个笔尖。刚刚删除了另一个。看起来不错。卫生署!
对于使用xib方法创建UIView并遇到此问题的任何人,您会注意到在连接检查器菜单下您将没有“视图”插座。但是,如果您将文件所有者自定义类设置为UIViewController,然后您将看到“视图”插座,您可以通过CMND将插座连接到CustomView。