4

我偶然发现了我认为 iOS 中一些奇怪的行为——搜索 StackOverflow 并没有发现任何与我的问题相同的东西。

本质上,如果您有两个带有设备修饰符的 .xib 文件(~iphone 和 ~ipad),并且您在 iPad 上(即在 iPhone 模拟器窗口中)运行 iPhone 应用程序(非通用),它将尝试加载 ~ipad xib文件而不是 ~iphone xib。

这是一个错误吗?我希望〜iphone xib被加载。即使实际设备是 iPad,它也在模拟 iPhone,对吧?那么它肯定应该加载iPhone接口文件吗?

重现步骤:

  1. 在 XCode 中创建一个新的 iPhone(非通用)应用程序 - 使用“单一视图”模板。
  2. 将 ViewController.xib 重命名为 ViewController~iphone.xib
  3. 复制并重命名 xib,以便您现在拥有 ViewController~iphone.xib 和 ViewController~ipad.xib
  4. 在 iPad 模拟器(或在实际的 iPad 设备上)运行此 iPhone 应用程序 - 加载 ~ipad XIB 而不是 ~iPhone xib。

谁能建议我如何解决这个问题?这很复杂,因为我的实际 XCode 项目有多个目标(1. 仅限 iPhone 的应用程序 2. 仅限 iPad 的应用程序),所以我需要支持所有场景,因此需要使用设备修饰符。

4

1 回答 1

0

我通常在使用 nib 时这样做:

- (id)init
{
    if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomiPhone )
    {
        nibNameString = @"mynib-iPhone";
    }
    else
    {
        nibNameString = @"mynib-iPad";
    }
    self = [super initWithnNibName:nibNameString bundle...
于 2012-08-15T07:53:35.747 回答