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

但是,当我单击应该将我带到创建的视图的工具栏图标时,我收到一条NSInternalInconsistencyException消息:

由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'-[UIViewController _loadViewFromNibNamed:bundle:]加载了“ ...”笔尖,但未设置视图出口。

因此,我打开了我的nib文件,并且看到没有设置参考插座的视图。 但是,我尝试单击并拖动“新引用出口”的圆圈到File's Owner,但这不会让我...我需要做些什么才能显示我的视图?


#1楼

我遇到了同样的问题,但是需要一个稍微不同的解决方案。 在这种情况下,问题是文件所有者的类,而不是视图的类。 要进行此设置,我必须单击Interface Builder窗口左下角的“向后播放”图标,然后出现一些选项,这些选项隔离了File Owner,First Responder和View的特征。 单击第一个(透明的大框),然后按上述建议设置我的自定义类。


#2楼

我只是把这个固定在我的。 大项目,两个文件。 一个是“ ReallyLargeNameView”,另一个是“ ReallyLargeNameViewController”

根据上面选择的第二个答案,我决定应该清理自己的构建。 Nada,但我仍然怀疑XCode(因为我有两个相同的类,应该对它们进行抽象,但是……)所以,一个人在工作,而不是。 文件的所有者名称已达到复制和粘贴的程度,重新命名了出口,重新启动了xCode,仍然一无所获。

因此,我删除了类似的命名类(这是一个视图)。 不久,新错误“字面上的插座未连接”实际上是“ webView不是键值”等等……基本上是说“ Visual Studio更好”。 无论如何...我删除了较小的命名文件,并且bam,它起作用了。

XCode被名称相似的文件所混淆。 该项目足够大,需要重新启动,这可能是其中的一部分。

希望我有一个比“ XCode困惑”更多的技术答案,但是好吧,xCode在这一点上变得很困惑。 不用困惑,就像我会帮助一个小孩一样。 它现在可以工作,:)如果上述方法不能解决问题,则应该使他人受益。

永远记住要清理构建(也要删除模拟器)


#3楼

我通常可以通过重新建立文件所有者和视图之间的连接来修复它。 从文件的所有者按住Control并拖动到您的View(在IB中),然后从弹出菜单中选择视图。


#4楼

在我的项目中发生了相同的错误,但原因不同。 在我的情况下,我在自定义UITableViewController类中使用名称为“ View”的IBOutlet设置。 我知道“视图”很特别,因为它是基类的成员,但是我认为“视图”(不同的情况)也不会有问题。 我猜可可的某些区域不区分大小写,可能装载一个xib是这些区域之一。 所以我刚刚将其重命名为DefaultView,现在一切都很好。


#5楼

选择文件所有者,然后打开身份检查器,为其指定对应的类名称。 如果以上方法均不起作用,但仍然看不到视图出口,则将新的引用出口连接到“文件的所有者”,然后就可以看到视图出口。 单击视图插座,以在视图插座和文件所有者之间建立连接。 运行该应用程序可以正常工作。


#6楼

我遇到了同样的问题,但是需要一个不同的解决方案。 在这种情况下,问题是文件所有者的类未连接到xib文件。


#7楼

我想支持StephenJ。有时候X代码确实很混乱。 我刚刚经历了很多使用UI的经历,并多次添加和删除了网点。 插座将不再接线。 我从来没有弄清楚具体的原因(我已经尝试了上面的所有解决方案),而我只需要删除NIB并从头开始重新创建它,实际上,在NIB起作用之前,必须使用其他名称。 (XCode 4.6.1)为此浪费了几个小时。


#8楼

就我而言,该视图未在xib中查看。 在xib中,视图的大小为none(无)(右侧第4个标签)。 我将大小设置为Freeform并重新加载xCode。 视图已被上诉,我将正确的链接设置为视图。


#9楼

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

#10楼

您确定已将UIView(或子类)分配给yourViewController的“ view”属性吗?

在xib的左窗格中,为yourViewController右键单击“文件所有者”,并确认已设置“视图”出口。 如果没有,将其设置为视图!

这肯定会解决问题


#11楼

对我来说,这里https://stackoverflow.com/a/6395750/939501所说的所有内容都是真实的,但是仍然抛出错误,原因是我创建了一个名称为ABCView的View类,然后将其删除,后来我添加了一个View Controller作为ABCViewController因此以某种方式在新的视图控制器中引用了旧的ABCView,因此我不得不删除ABCViewController并添加一个新名称不同的名称来解决我的问题。

谢谢


#12楼

如果您尝试了所有操作后仍然遇到此错误,请尝试从头开始重新创建类文件,但要记住选中“也创建XIB文件”复选框。 当分别创建这些文件时,这将自动链接一些未链接的项目。 创建完成后,您可以将所有内容剪切并粘贴到新的XIB上,并且应该可以正常工作。

我正在专门通过在Swift中单独创建文件来发现此问题。


#13楼

今晚,我遇到了一个与Swift UIViewController子类非常相似的东西。 在这种情况下,以上修复程序均无效,但是对我的代码进行了一些重新排序。 尽管对子类进行了很好的编译,但在同一文件中子类的定义本身之前,对子类进行扩展的Net-net似乎使XCode感到困惑。 解决方法是将扩展名放在子类的定义之后。

我已经在回答类似问题的细节中张贴了细节。


#14楼

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

  1. 选择文件所有者
  2. 在右侧面板上选择自定义类。
  3. 输入自定义类别名称

  1. 在右侧面板上选择八重奏
  2. 拖动视图出口以查看组件

最后,使用滚动代码实例化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];

#15楼

对我来说,发生的时候

  • 我有一个与Nib文件关联的ViewController类(.mm / h),
  • 该ViewController的UIView必须作为子视图加载到另一个视图上,

  • 我们将这样称呼

     -(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;}

在这里,缺少loadView ,,添加此行解决了我的问题。


#16楼

在我的情况下,实现了指定的初始化方法- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil *** ViewController类中的- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil ,因此即使我调用其他初始化方法来初始化对象,指定的初始化方法也会叫做 。

因此,要解决此问题,请检查- (instancetype)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil是否也是正确的方法。


#17楼

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


#18楼

我发现了同样的问题,这是因为我在Content选项下的Table View属性中勾选了“ 静态单元格 ”。 更改为“ Dynamic Prototypes ”时有效。 屏幕截图如下。


#19楼

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


#20楼

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


#21楼

我在Xcode 9.3中遇到了类似的问题,并将“文件所有者的”属性检查器下的“模块”设置为项目模块为我解决了这一问题。


#22楼

先前的答案几乎可以解决我的问题,但缺少最后一步。

  1. 用相同的名称创建一个xib和swift文件。

  1. 将文件所有者设置为UIView子类。

  1. 将出口从View拖到UIView子类,将其命名为“ contentView”

  1. 添加此自定义初始化程序,以便在xib加载时将其附加到contentView

required init?(coder aDecoder: NSCoder) {super.init(coder: aDecoder)Bundle(for: self.classForCoder).loadNibNamed("SampleView", owner: self, options: nil)addSubview(contentView)contentView.frame = self.boundscontentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]}

现在,您添加的任何@IBOutlets都将被附加。

干杯,理查德


#23楼

当您有一个使用@objc引用不同名称空间的Swift代码时,请确保使用Objective-C类名称:

@objc(NamespacedSomeViewController)
class SomeViewController: UIViewController {
....

在这种情况下,您需要在IB中使用NamespacedSomeViewController


#24楼

打开您的viewController所在的情节提要文件或带有textEdit.app的 XIB相关文件,并检查该情节提要或XIB名称是否与viewController相同,然后进行更改,保存并重新加载/重新启动Xcode。


#25楼

如果您使用的是自定义init方法,请检查返回的内容是否有效。 我遇到了这样的一段代码,它崩溃了:

- (id)init {self = [super init];if (self) {CustomController *controller = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass(className) owner:self options:nil];} return self;
}

在另一个类中,控制器的创建方式如下:

CustomController *controller = [[CustomController alloc] init];

问题是在init方法中,self尚未更改,应改为如下所示:

- (id)init {self = [super init];if (self) {CustomController *controller = [[NSBundle mainBundle] loadNibNamed:NSStringFromClass(className) owner:self options:nil];[controller viewDidLoad];self = controller;} return self;
}

#26楼

你们是对的,但是由于我是新来者,我花了一些时间才弄清楚实现此目的的所有步骤。 这对我有用:

  • 打开XIB文件导致问题
  • 单击左侧栏上文件的所有者图标(顶部,看起来像一个黄色轮廓框)
  • 如果看不到右侧边栏,请单击工具栏中“视图”上方的第三个图标。 这将显示右侧边栏
  • 在右侧边栏中,单击第三个标签-看起来有点像报纸的标签
  • 在顶部的“自定义类”下,确保“类”是应与此视图相对应的ViewController的名称。 如果没有,请输入
  • 在右侧边栏中,单击最后一个选项卡-一个看起来像带有箭头的圆圈的选项卡
  • 您应该看到带有“视图”的“出口”。 将其旁边的圆圈拖到左侧栏上的“视图”图标(底部,看起来像是带有粗灰色轮廓的白色正方形)
  • 保存XIB并重新运行

#27楼

仅仅花了一个多小时来尝试找出为什么从笔尖启动视图属性时未在视图控制器中设置视图属性的原因。 请记住在视图控制器的initWithNibName内部调用“ [super initWithNibName ...]”。


#28楼

我的问题是由在类文件夹中没有视图集的重复笔尖引起的。 xcode似乎选择一个笔尖进行构建,然后在下次构建项目时选择另一个。 刚刚删除了另一个。 看起来不错。 h!


#29楼

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


#30楼

对我来说,问题是由调用initWithNibName:bundle:引起的。 我正在使用nib文件中的表格视图单元格来定义位于tableViews上的条目形式。 由于我没有观点,因此与某个观点挂钩是没有意义的。 相反,如果我改为调用initWithStyle:方法,并从那里加载nib文件,那么事情将按预期进行。

笔尖已加载,但未设置“查看”出口相关推荐

  1. linux 查看已加载模块,Linux怎么查看加载内核模块之lsmod命令

    1. lsmod简介 lsmod命令用于显示已经加载到内核中的模块的状态信息.Linux是一个模块化的系统,可以添加自定义的模块到内核中,比如新设置的驱动程序.lsmod可以显示已加载模块的信息,包括 ...

  2. 如何解决地图已加载却不能渲染的问题?

    Stack Overflow问题分享 Stack Overflow上有一个海外开发者提问:我在我的项目中使用华为Map Kit,地图已加载但未渲染? 解决方案 一般来说引起地图加载未渲染可能的原因有很 ...

  3. 中标麒麟操作系统,yum安装软件时提示:“已加载插件:langpacks,无须任何处理“的解决办法

    中标麒麟操作系统,yum安装软件时提示:"已加载插件:langpacks,无须任何处理"的解决办法 通常都是由于yum仓库未包含你所要安装的那款软件造成. 解决办法: 输入如下命令 ...

  4. 检测jQuery.js是否已加载的判断代码

    转载自http://www.jb51.net/article/27185.htm 测类.方法.变量或属性是否已存在,这是Javascript编程基础知识.在这里我们就是要检测jQuery()或$()函 ...

  5. visual studio 调试时提示 已加载“C:\Windows\SysWOW64\ntdll.dll”。无法查找或打开 PDB 文件。

    问题描述 "Win32Project3.exe"(Win32): 已加载"D:\software\VS2013\VS2013 文档\Win32Project3\Debug ...

  6. dll已加载但找不到入口点dllregisterserver_Java 是如何加载类的?

    本文只是从 Java 的角度出发,并不涉及 Android 的类加载方式. 从上一篇解析类加载机制的文章: 我们已经知道了 ClassLoader 的委托机制. 本篇文章我们来详细分析下 ClassL ...

  7. 计算机进管理提示找不到入口,win10系统开机提示xxxdll模块已加载但找不到入口点的教程...

    有关win10系统开机提示xxxdll模块已加载但找不到入口点的操作方法想必大家有所耳闻.但是能够对win10系统开机提示xxxdll模块已加载但找不到入口点进行实际操作的人却不多.其实解决win10 ...

  8. dll侧加载_win7系统开机提示xxxdll模块已加载但找不到入口点的解决方法

    很多小伙伴都遇到过win7系统开机提示xxxdll模块已加载但找不到入口点的困惑吧,一些朋友看过网上零散的win7系统开机提示xxxdll模块已加载但找不到入口点的处理方法,并没有完完全全明白win7 ...

  9. (项目名).exe”。已加载符号。 无法查找或打开 PDB 文件。

    无法查找或打开 PDB 文 "wb.exe"(Win32):  已加载"D:\work\test\wb\x64\Debug\wb.exe".已加载符号. &qu ...

最新文章

  1. Linux常见命令(二)
  2. mysql中的G标志实现纵向显示
  3. 关于oracle中table函数的使用
  4. Redis主从复制(Master-Slave Replication)
  5. 久游遭受重创的ng2b
  6. Base64编码简介及在java中的使用
  7. 空间中的语义直线检测_基于语义分割的车道线检测算法研究
  8. Transformer、BERT细节基础知识点
  9. batch normalization的原理和作用_【推荐算法】Deep amp; Cross Network模型原理和实践...
  10. 阿里巴巴java开发手册-嵩山版 下载
  11. [记录]关于电机反转和l298n和我的心里斗争
  12. 用Python算带有进度条的圆周率
  13. B站顶流何同学对话苹果CEO库克,iPhone某些设计想法源自中国
  14. Base64加解密__完整版有解释
  15. 量化投资为什么用python_1、量化投资—为什么选择Python?
  16. java stream转byte[ ]
  17. TMC5160步进电机驱动芯片开发手记
  18. SpringBoot文件上传
  19. 有图有真相——MD瞬间被移动扣了90多M流量加9元钱
  20. 刘磨叽恶狠狠地瞪了了张s

热门文章

  1. Ubuntu12.04配置JDK1.8
  2. Android Jetpack 组件之 Lifecycle使用
  3. c语言中ai是什么,AICODE在C语言教学中应用研究.doc
  4. java中array_Java 中的array数组总结之一
  5. JavaScript 数组拼接打印_JavaScript 数组方法
  6. Java学习笔记16
  7. Android10.0 startActivity启动过程
  8. LeetCode 7 反转整数
  9. mysql 高并发加锁_Mysql高并发加锁事务处理
  10. Eclipse 导入逆向工程