【发布时间】:2012-05-19 00:21:30
【问题描述】:
我偶然发现了我认为 iOS 中的一些奇怪行为 - 搜索 StackOverflow 并没有找到与我的问题相同的任何东西。
基本上,如果您有两个带有设备修饰符(~iphone 和~ipad)的 .xib 文件,并且您在 iPad 上(即在 iPhone 模拟器窗口中)运行 iPhone 应用程序(非通用),它将尝试加载~ipad xib 文件而不是 ~iphone xib。
这是一个错误吗?我希望〜iphone xib被加载。即使实际的设备是 iPad,它也在模拟 iPhone,对吧?那么它肯定应该加载iPhone接口文件吗?
重现步骤:
- 在 XCode 中创建一个新的 iPhone(非通用)应用 - 使用“单一视图”模板。
- 将 ViewController.xib 重命名为 ViewController~iphone.xib
- 复制并重命名 xib,这样您现在就有 ViewController~iphone.xib 和 ViewController~ipad.xib
- 在 iPad 模拟器中(或在实际的 iPad 设备上)运行此 iPhone 应用程序 - 加载 ~ipad XIB 而不是 ~iPhone xib。
谁能建议我如何解决这个问题?这很复杂,因为我的实际 XCode 项目有多个目标(1. 仅限 iPhone 的应用程序 2. 仅限 iPad 的应用程序),所以我需要支持所有场景,因此需要使用设备修饰符。
【问题讨论】:
-
我可以确认这种行为。我将我的 *~ipad.xib 重命名为 *-ipad.xib 并使用 [UIDevice currentDevice].userInterfaceIdiom 在代码中选择适当的 xib 文件
标签: ios xcode ipad interface-builder xib