正确的行为? - 在iPad上运行的iPhone应用程序加载xib与〜ipad扩展

问题描述:

我已经偶然发现我认为是iOS中的一些奇怪行为 - *的搜索没有发现任何与我的问题相同的东西。基本上,如果你有两个使用设备修饰符(〜iphone和〜ipad)的.xib文件,并且你在iPad上(即在iPhone模拟器窗口内)运行iPhone应用程序(不是通用的),它将尝试加载〜ipad xib文件而不是〜iphone xib。正确的行为? - 在iPad上运行的iPhone应用程序加载xib与〜ipad扩展

这是一个错误?我期望〜iphone xib被加载。尽管实际的设备是iPad,但它正在模拟iPhone,对吧?所以肯定它应该加载iPhone界面文件?

重现步骤:

  1. 创建一个新的iPhone XCode中(不通用)的应用程序 - 使用 '单一视图' 模板。
  2. 重命名ViewController.xib到的ViewController〜iphone.xib
  3. 复制和重命名的厦门国际银行,让你现在拥有的ViewController〜iphone.xib和ViewController〜ipad.xib
  4. 运行在iPad模拟器内这个iPhone应用程序(或在实际的iPad设备上) - 加载〜ipad XIB而不是〜iPhone xib。

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

+1

我可以证实这种行为。我将* * ipad.xib重命名为* -ipad.xib,并使用[UIDevice currentDevice] .userInterfaceIdiom – skidr0w

我一般用笔尖工作时,做到这一点:

- (id)init 
{ 
    if([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomiPhone) 
    { 
     nibNameString = @"mynib-iPhone"; 
    } 
    else 
    { 
     nibNameString = @"mynib-iPad"; 
    } 
    self = [super initWithnNibName:nibNameString bundle... 
+0

在代码中选择相应的xib文件。我还认为发生了什么是您复制了iPhone笔尖,何时它应该是iPad笔尖。尝试创建一个iPad项目,然后将该笔尖复制到您的iPhone项目中,而不是复制iPhone项目笔尖。 – TigerCoding