Xcode 6.3:无法在bundle中加载NIB

时间:2015-04-09 20:00:42

标签: ios xcode interface-builder

使用Xcode 6.3(iOS 8.3 SDK)编译时,某些nib文件名在某些情况下最终会有额外的~ipad~iphone。例如,ViewController~ipad.xib变为ViewController~ipad~ipad.nib。这导致崩溃,因为应用程序不希望编译的nib文件具有双后缀。

4 个答案:

答案 0 :(得分:39)

要解决此问题,请在Interface Builder中的任何受影响的文档中取消选中“使用大小类”。

这似乎是Xcode 6.3(以及iOS 8.3 SDK)中包含的ibtool版本中的错误。它发生在以下情况:

  • 您有一个特定于设备的输入文件*~(iphone|ipad).xib,其大小等级已启用。
  • 您的部署目标是比iOS 8.0更早的版本。

我能够在命令行上重现问题:

xcrun --sdk iphonesimulator8.3 ibtool --minimum-deployment-target 7.0 --compile ViewController~ipad.nib ViewController~ipad.xib

如果您发现同样的行为,请复制this radar这似乎已在最新的Xcode 6.4测试版中修复。

答案 1 :(得分:2)

在xib名称中将〜更改为_并在以编程方式加载包时明确指定后缀。

答案 2 :(得分:0)

这在编译XIB文件时似乎是Xcode 6.3的错误。为了解决异常问题,有4个选项:

  1. 将您的项目定位到iOS 8
  2. 使用故事板而不是XIB文件
  3. 禁用大小类
  4. 处理代码中的NIB加载
  5. 我在博文中详细介绍了这些选项:http://www.joobik.com/2015/04/fixing-xcode-63-ios-sdk-error-could-not.html

答案 3 :(得分:0)

我有一些以〜命名的文件,我将它们重命名,但它没有帮助,问题是我没有XIB文件,我甚至试图将我的故事板改为大小类。

没有任何帮助,我已经将目标设置为iOS 7,我真的需要支持iOS 7。

我不知道代码中NIB加载的处理方式......

还有一次,问题是AppStore中的App开始在iOS 8.3上崩溃,如果尝试使用运行iOS 8.3的iPad Air在XCode 6.3中构建App,它会立即崩溃:

*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: ....

感谢您的帮助。