这真的很奇怪,似乎随机发生在一些xib文件中。我目前正在将一个iPad应用程序移植到iPhone上,为此我创建了新的xib文件并为它们添加了~iphone后缀。这很好用,我之前从未遇到过问题。但是对于这个特定的项目,一些生成的nib文件(当你构建你的应用程序时,xib被编译成nib文件)没有正确的后缀,或者没有编译正确的xib文件。我尝试了几个设置,这就是结果:
案例A
首先尝试,我像往常一样创建了移植的xib文件:
QuestionViewController-NoOptions.xib
QuestionViewController-NoOptions~iphone.xib
Xcode会生成这两个文件:
QuestionViewController-NoOptions~ipad.nib
QuestionViewController-NoOptions~iphone.nib
哪个是正确的名称,但 ~iphone 只是 ~ipad 的副本。
案例B
我尝试重命名这两个文件:
QuestionViewController-NoOptions~ipad.xib
QuestionViewController-NoOptions~iphone.xib
Xcode将生成:
QuestionViewController-NoOptions~ipad~ipad.nib
QuestionViewController-NoOptions~iphone.nib
对于这种情况,这两个文件都是正确构建的,但当然 ~ipad~ipad 一个人不能在ipad上工作(App崩溃抱怨无法找到{{ 1}})。
案例C
更糟糕的是:
QuestionViewController-NoOptions~ipad
QuestionViewController-NoOptions~ipad.xib
Xcode将生成:
QuestionViewController-NoOptions.xib
QuestionViewController-NoOptions~ipad~ipad.nib
,但 ~iphone 只是 ~ipad~ipad 的副本。
一些随机事实:
我在xib源代码上手动播放了这一行(删除或添加QuestionViewController-NoOptions~iphone.nib
部分),但没有有用的结果:
iPad
以前有人遇到过这个问题吗?任何线索都会有所帮助......谢谢!
答案 0 :(得分:6)
问题是在某些xib文件中我使用大小类(使用大小类选项已在文件检查器上激活) 。似乎 Size Classes 用于替换旧的~iphone
和~ipad
后缀,如果您使用它,它将自动为您创建后缀nib文件。禁用大小类就可以了,现在一切都按照假设运行了。