2012-03-02 46 views
0

我有一個開發中的通用應用程序。iOS通用應用程序和筆尖/ xib

該應用程序使用筆尖,和我有,例如,

ExcitingViewController.xib 
ExcitingViewController~iPad.xib 

在iPhone或ipad模擬器,適當的變體是自動拾取(即,具有〜iPad的後綴的一個所選擇的iPad沒有任何代碼更改)。

但是,在真正的iPad上,iPhone變體總是被使用。

我已經提到過在編程上選擇合適的NIB,但是因爲這是在模擬器上自動處理的,所以我不明白它爲什麼不能成爲真正的骰子。

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 
{ 
    excitingViewController = [[ExcitingViewController alloc] initWithNibName:@"ExcitingViewController" bundle:nil]; 
} 
else 
{ 
    excitingViewController = [[ExcitingViewController alloc] initWithNibName:@"ExcitingViewController~iPad" bundle:nil]; 
} 

有關在實際設備上自動選擇〜iPad變體的任何提示? (順便說一句,模擬器通常完全可靠地展現出正確的行爲,所以找到這些差異/錯誤是令人討厭的)。

回答

0

OK使用IS_IPAD(),答案似乎是,你需要以編程方式處理這個問題(如問題所示),這似乎是蘋果公司錯過的機會,但也許還有更多。

0

我在我的項目中所做的是重寫initWithNibName/initWithCoder/init並檢查它是否是iPad,如果是的話加載相應的。

我有一個宏在我的PCH爲iPad檢查:

// iPad detection 
#ifdef UI_USER_INTERFACE_IDIOM 
#define IS_IPAD() (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) 
#else 
#define IS_IPAD() (false) 
#endif 

然後我在我的代碼需要的地方

0

對不起,我遲到了,但你嘗試過這樣的:

  • ExcitingViewController〜iphone.xib
  • ExcitingViewController〜ipad.xib

這應該是設備不可知如此

[[ExcitingViewController alloc] initWithNibName:@"ExcitingViewController" bundle:nil] 

應該可以在兩個設備上工作而不必檢查t他用戶界面習慣用法。

這是涵蓋在Resource Programming Guide