下面列出的错误是什么?
2011-02-23 21:24:12.218成功[7238:207] * 由于未捕获的异常'NSInternalInconsistencyException'而终止应用程序,原因:'无法在bundle中加载NIB:'NSBundle&lt ; / Users / jimkillen12 / Library / Application Support / iPhone Simulator / 4.2 / Applications / BAA5E0E7-AF12-4301-A4F8-1B9797C9E82D / Success.app> (加载)'名称'MainWindow-iPad''
答案 0 :(得分:31)
项目中缺少一个NIB文件,添加所需的NIB文件:
在构建阶段
+
按Shift+Cmd+K
清理您的构建,然后运行。
P.S。同时确保在调用initWithNibName:@"ViewNameController"
可能,您已通过小写字母在呼叫中为您的NIB命名,或者您可能还包含扩展名.xib,这不是必需的
答案 1 :(得分:12)
可能您已使用小写字母在呼叫中命名了您的NIB。在这种情况下,模拟器工作正常,但iPhone设备将在运行时返回错误。
例如,
DetailViewController *detailViewController = [[DetailViewController alloc]
initWithNibName:@"detailViewController" bundle:nil];
会失败。您需要更改为:
DetailViewController *detailViewController = [[DetailViewController alloc]
initWithNibName:@"DetailViewController" bundle:nil];
答案 2 :(得分:3)
在您的构建设置中,添加架构=>> armv6和armv7
我刚刚使用此
删除了我的错误答案 3 :(得分:2)
我遇到了同样的问题,但那是因为我写了扩展名.xib而且不是必要的
token_view = [[GetToken alloc] initWithNibName:@"GetToken_iPad.xib" bundle:nil];
而不是
token_view = [[GetToken alloc] initWithNibName:@"GetToken_iPad" bundle:nil];
答案 4 :(得分:1)
是否有与NIB相关的警告?这通常是针对NIB文件中的错误(例如不正确的NIB类型)。
右键单击该文件,然后单击“获取信息”以验证该类型是否符合预期。
答案 5 :(得分:1)
在我的情况下是下一个:
我在代码XIB中加载了名称为“?????? Ipad” 但是XIB文件名是“?????? IPad”
答案 6 :(得分:1)
请确保您的nib / xib文件包含在相应的目标成员中。
答案 7 :(得分:1)
我遇到同样的问题只需遵循步骤。
1.将您的项目复制到另一个地方。
2.复制您的NIB文件哪个崩溃应用
3.只需更改名称
实施例。旧文件Demo.xib比复制和更改名称DemoNew.xib
我的代码在
之下旧代码
Demo *controller = [[Demo alloc]initWithNibName:@"Demo" bundle:nil];
我只是更改姓名
Demo *controller = [[Demo alloc]initWithNibName:@"DemoNew" bundle:nil];
它为我工作。
答案 8 :(得分:0)
只需检查项目中是否存在MainWindow.xib
文件。如果没有,只需添加名为MainWindow.xib
的新接口文件。
答案 9 :(得分:0)
另一个可能的问题:您在iOS 5上使用基本本地化(注意,它在iOS模拟器上有效,但在设备上没有),但仅从iOS 6开始支持
有关详细信息,请参阅:Could not load nib in bundle base internationalization
答案 10 :(得分:0)
如果您尝试在从笔尖拾取的集合视图中加载 collectionView单元格,那么您可能会看到错误" ' NSInternalInconsistencyException',原因:'无法在捆绑中加载NIB:' NSBundle" 从nib文件加载集合视图时,您无法在故事板上声明nib上的集合视图单元格。 正确的方法是使用新的笔尖创建一个新的自定义单元格,然后将其加载到集合视图中。 注意:不要忘记注册新自定义收集单元格的笔尖。
答案 11 :(得分:0)
0
例如,如果您使用UIViewController类名称作为TextPicker,那么您需要使用类似波纹管的代码
let bundle = Bundle(for: TextPicker.self)
super.init(nibName: "TextPicker" , bundle: bundle)
如果您在其他项目中将TableView和Xib用作Framework
tableView.register(UINib.init(nibName: "TextPickerCell", bundle: bundle), forCellReuseIdentifier: "TextPickerCell")
let bundle = Bundle(用于:TextPicker.self)
答案 12 :(得分:0)
就我而言,错误是“nib 文件的名称不正确:
collectionViewOutlet.register(UINib(nibName: "CollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "Cell")
建议使它们全部相同,单元标识符和 nibName
也是如此:
collectionViewOutlet.register(UINib(nibName: "CollectionViewCell", bundle: nil), forCellWithReuseIdentifier: "CollectionViewCell")
如果它不起作用试试这个:
Target -> Build Phases -> Copy Bundle Resources
您会发现您的 xib/storyborad
为红色。
删除它。此外,从项目中删除所有对缺失文件的引用。
现在再次将这个 storyboard/xib
文件拖到这个 Copy Bundle Resources 中。它仍然会显示一个红色的文件,但不用担心。
Command + Shift + K 清理项目,它会工作。
答案 13 :(得分:0)
就我而言(使用 XCode 12.5 和 Swift 5),问题是我根据 ViewController 的名称选择了 NIBName:
let nibName = String(describing: type(of: self))
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: nibName, bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView
所以我有“TestView.xib”和“TestViewController.swift”。这不匹配,只能通过将我的 ViewController 重命名为“TestView.swift”来解决。