在iPad上运行的iPhone应用程序会加载带〜ipad扩展名的xib

我偶然发现了我认为在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应用程序),所以我需要支持所有场景,因此使用设备修改器。


    我在使用笔尖时通常会这样做:

    - (id)init
    {
        if( [[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomiPhone )
        {
            nibNameString = @"mynib-iPhone";
        }
        else
        {
            nibNameString = @"mynib-iPad";
        }
        self = [super initWithnNibName:nibNameString bundle...
    
    链接地址: http://www.djcxy.com/p/95713.html

    上一篇: iPhone app running on iPad loads xib with ~ipad extension

    下一篇: Xcode 4.2 , change the iPhone xib to iPad xib