【问题标题】:Trouble with loading a separate XIB for iPad or iPhone为 iPad 或 iPhone 加载单独的 XIB 时遇到问题
【发布时间】:2011-07-15 10:46:12
【问题描述】:

我无法弄清楚如何在通用应用程序中为 iPad 或 iPhone 加载单独的 XIB。

将 Xcode 项目转换为 Universal 并拥有单独的主视图界面很容易。

我的问题是辅助视图,让它为 iPad 和 iPhone 提供单独的界面。

请提供您可以提供的任何帮助,因为我已经在这个问题上工作了几天但没有成功。提前致谢!

【问题讨论】:

    标签: iphone xcode ipad interface-builder universal


    【解决方案1】:

    我知道@indragie 的回答很常见,但这是一种常见的误解,会导致你做的工作比你实际需要做的要多。

    只要您以某种方式命名 xib 文件,iPhone 或 iPad 都会自动选择它们。在另一篇文章中查看我对同一问题的回答:

    iOS: Using device modifiers for loading xib files?

    【讨论】:

    • 绝对是我见过的处理这个问题的最佳方式!
    • 确保您使用 ~ipad 而不是 ~iPad。后者将适用于模拟器,但不适用于设备。
    【解决方案2】:

    只需添加一个名为 MainView~ipad.xib 的文件即可加载这个 i.s.o。在 iPad 上运行时的 MainView.xib..

    【讨论】:

      【解决方案3】:

      您可以使用UI_USER_INTERFACE_IDIOM() 检查应用程序是否在 iPad 或 iPhone/iPod touch 上运行:

      if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
          // Running on iPad
      } else {
          // Running on iPhone or iPod touch
      }
      

      有关加载 NIB 文件的更多信息,请阅读 Apple 关于 Nib 文件的 Resource Programming Guide。您可能需要特别查看以编程方式加载 Nib 文件部分,该部分展示了如何使用 NSBundle 从代码中以编程方式加载 NIB。然后,您可以将其与上述代码结合使用,根据您正在运行的设备正确加载正确的 NIB。

      【讨论】:

      • -1 iOS SDK 提供了一个简单的命名约定,它将根据设备加载正确的 xib 文件。您不需要在整个代码中增加这种 if 语句结构。我在下面的回答中对此进行了描述。
      猜你喜欢
      • 2012-06-14
      • 2011-07-26
      • 1970-01-01
      • 2012-05-08
      • 2023-04-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-14
      • 1970-01-01
      相关资源
      最近更新 更多