2012-05-10 62 views
4

我已經偶然發現我認爲是iOS中的一些奇怪行爲 - StackOverflow的搜索沒有發現任何與我的問題相同的東西。基本上,如果你有兩個使用設備修飾符(〜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

回答

0

我一般用筆尖工作時,做到這一點:

- (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

相關問題