簡體   English   中英

iOS通用應用和筆尖/ XIB

[英]iOS Universal apps, and nibs / xibs

我有一個通用的應用程序正在開發中。

該應用程序使用NIB,例如,

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變體的任何提示?

(順便說一句,模擬器通常在表現正確行為方面完全可靠,因此找到這些差異/錯誤很煩人)。

抱歉,我參加聚會很晚,但是您嘗試過以下方法:

  • 令人興奮的ViewController〜iphone.xib
  • 令人興奮的ViewController〜ipad.xib

這應該與設備無關

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

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

資源編程指南中對此進行了介紹。

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

我在pch中有一個宏,用於iPad檢查:

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

然后我只在需要的地方在代碼中使用IS_IPAD()

好的,答案似乎確實是您需要以編程方式處理此問題(如問題中所示),這似乎是Apple錯失的機會,但也許還有更多機會。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM