2012-03-07 156 views
0

我正在將iPhone應用程序轉換爲通用應用程序。iPhone應用程序轉換爲iPad應用程序顯示iPhone xib不是iPad xib

  • 我已經改變了所有的Xcode的設置,並增加了新的主窗口,iPad.xib
  • 我已經迷上所有的接口生成器引用了(如主窗口,iPad的到合適的iPad類的viewController,窗等)
  • 我添加了一個新的iPad類的打開視圖控制器和我AppDelegate.h文件中聲明它,在我AppDelegate.m文件合成它們:

    的UIWindow *窗口; UIWindow * windowiPad; AppViewController * viewController; AppViewControlleriPad * viewControlleriPad;

  • 在應用程序委託我檢查這些設備我運行和加載相應的類

    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {  
    // Override point for customization after application launch. 
    navController = [[UINavigationController alloc] initWithRootViewController:viewControlleriPad]; 
    // Add the view controller's view to the window and display. 
    [windowiPad addSubview:navController.view]; 
    [windowiPad makeKeyAndVisible]; 
    
    [navController setNavigationBarHidden:YES animated:NO]; 
    
    
    } else { 
    //I am an iPhone! 
    
    // Override point for customization after application launch. 
    navController = [[UINavigationController alloc] initWithRootViewController:viewController]; 
    // Add the view controller's view to the window and display. 
    [window addSubview:navController.view]; 
    [window makeKeyAndVisible]; 
    
    [navController setNavigationBarHidden:YES animated:NO]; 
    } 
    

,一切似乎很好地工作 - 但它仍加載iPhone筆尖/ xib文件AppViewController.xib而不是AppViewControlleriPad.xib。歡迎您提出更多信息,但我無法弄清楚如何在運行iPad而不是iPhone /原始xib文件時加載AppViewControlleriPad.xib。

我想,也許天真地說,如果xib文件與視圖控制器的類名稱相同,那麼ViewController會將其用作其xib。

我該如何解決這個問題,以便爲正確的設備加載正確的xib?

回答

3

你有一個拼寫錯誤 - iPad資源的正確修正是「〜ipad」而不是「-iPad」。使用「〜ipad」,您的資源將根據設備自動加載。

而你可能不需要爲你的iPad控制器使用另一個UIWindow。您可以在應用程序起點使用相同的窗口。好的做法是有一個視圖控制器(在你可以爲不同的設備執行一些特殊的事情)和兩個筆尖(一個「普通」和第二個「〜ipad」修飾)。在極少數情況下,如果整個控制器的行爲完全不同,則可能需要使用兩個視圖控制器。

+0

如果您從頭開始創建通用應用程序,則後綴實際上是_iPhone和_iPad。 – 2012-03-07 14:51:52

+1

是的,但通用應用程序模板中的後綴不是「真正的後綴」 - 它們僅用於在初始化應用程序委託中的視圖控制器時通過名稱手動選擇正確的資源文件。根據文件https://developer.apple.com/library/ios/#documentation/Cocoa/Conceptual/LoadingResources/Introduction/Introduction.html「〜ipad」和「〜iphone」後綴對於自動識別是正確的,而不檢查是否(UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad) – 2012-03-07 15:42:21

+0

哇,tnx這個信息。我生活在錯誤的信念中。 +1 – 2012-03-07 15:46:18

0

這可能是由於您沒有將iPad的視圖控制器連接到IB的文件所有者。

相關問題