我偶然发现了我认为 iOS 中一些奇怪的行为——搜索 StackOverflow 并没有发现任何与我的问题相同的东西。
本质上,如果您有两个带有设备修饰符的 .xib 文件(~iphone 和 ~ipad),并且您在 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 的应用程序),所以我需要支持所有场景,因此需要使用设备修饰符。