ios - Xcode 为通用应用程序构建名称后缀不正确的 nib 文件

标签 ios xcode ios-universal-app

这真的很奇怪,它似乎随机发生在一些 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 上工作(应用程序崩溃提示找不到 QuestionViewController-NoOptions~ipad )。

    案例C

    更糟糕:
  • 原始文件: QuestionViewController-NoOptions~ipad.xib
  • 移植文件: QuestionViewController-NoOptions.xib

  • Xcode 将生成:
  • QuestionViewController-NoOptions~ipad~ipad.nib
  • QuestionViewController-NoOptions~iphone.nib

  • 其中 ~ipad~ipad 是正确的,但 ~iphone 只是 ~ipad~ipad 的副本。

    一些随机事实:
  • 一些xib正在使用自动布局,而另一些则没有,如果我启用或禁用它,行为就会改变(我有一次~iphone~iphone和一个~iphone)。
  • 我在 xib 源代码上手动使用了这一行(删除或添加 iPad 部分),但没有有用的结果:
     <document type="com.apple.InterfaceBuilder3.CocoaTouch.iPad.XIB" version="3.0" toolsVersion="7531" systemVersion="14D131" targetRuntime="iOS.CocoaTouch.iPad" propertyAccessControl="none" useAutolayout="YES" useTraitCollections="YES">
    

  • 以前有人遇到过这个问题吗?任何线索都会有所帮助...谢谢!

    最佳答案

    问题是在某些 xib 文件中我使用了大小类(文件检查器上激活了使用大小类选项)。 Size Classes 似乎是为了替换旧的 ~iphone~ipad后缀,如果你使用它,它会自动为你创建后缀的 nib 文件。禁用大小类起到了作用,现在一切都按预期工作。

    关于ios - Xcode 为通用应用程序构建名称后缀不正确的 nib 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29623216/

    相关文章:

    ios - 如何在自动布局约束中使用不等式?

    iphone - 按钮文本未显示且 xcode 崩溃

    ios - 身份验证挑战后未调用 URLSession 委托(delegate)

    ios - 苹果 map URL 方案 t=

    ios - 将不同版本的应用程序上传到苹果应用商店

    objective-c - 如何使用一个 ViewController 文件加载横向 xib?

    ios - Xcode 和 Flutter 插件 : Could not find or use auto-linked framework 'Flutter'

    xcode - 无法强制解包非可选类型的值 : Avoid "Optional()"

    iOS 通用应用程序默认图像

    iOS 通用应用类架构