2012-07-10 81 views
0

我有一個適用於iPad和iPhone的通用iOS應用程序。我創建了一個帶有xib和iPad的課程。我現在如何爲iPhone設計它?爲iPhone創建另一個xib?如果是這樣的話,我會告訴應用程序如何在需要時爲iPhone加載xib,因爲現在它會加載iPad xib,並且一切都太大了。 在此先感謝XCode通用應用程序

回答

1

那麼,您的視圖控制器有一個名爲initWithNibName: bundle:的方法。 這樣做:

MyController *controller = [[MyController alloc] initWithNibName:[NSString stringWithFormat:@"myController_%@",deviceName] bundle:nil]; 

編輯:你必須做出2個xibs,對不對?將它們命名爲Settings_iPhone.xib和Settings_iPad.xib。當你要顯示設置屏幕,繼續申報

NSString *deviceName = ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) ? @"iPhone" : @"iPad";

之後:

Settings *controller = [[Settings alloc] initWithNibName:[NSString stringWithFormat:@"Settings_%@",deviceName] bundle:nil]; 
+0

我不需要的設備名稱,如果我在廈門國際銀行文件類型名稱自己的權利?它告訴我沒有可見的@interface'Settings'聲明選擇器'initWithNibName' – oybcs 2012-07-10 10:19:02

+1

請參閱我編輯的答案 – George 2012-07-10 10:23:07

+0

謝謝,以及我如何將新的筆尖連接到Settings類? – oybcs 2012-07-10 10:30:46

1

是的,你需要兩個筆尖文件。您可以使用initWithNibName並通過使用以下代碼檢測設備類型來指定筆尖的名稱。

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) 

這將允許你在不同的設備

+0

我做這樣說:如果 (UI_USER_INTERFACE_IDIOM()== UIUserInterfaceIdiomPad) 但是當我這樣做: 設置* settingsViewController = [[設置頁頭] initWithNibName:[的NSString stringWithFormat:@ 「設置 - iPhone」 捆綁:零]]; 它告訴我'設置'沒有可見的@interface聲明選擇器'initWithNibName' – oybcs 2012-07-10 10:16:44

1

當我需要做這樣的應用,我做了2 XIB文件,一個爲iPad,一個用於iPhone區別開來。第一個是使用視圖控制器創建的。第二個是通過添加接口文件創建的。我試圖讓meaningfull的名稱(如:ListNameVC.xib和ListNameVC_iPad.xib

在第二次廈門國際銀行,你需要做兩件事情

  • 文件的所有者類必須指向正確的VC類
  • 您必須在對象與文件的所有者認爲出口鏈接視圖(否則你會崩潰上執行)。

有了這些,你可以創建你的視圖控制器的正確的廈門國際銀行,基於呼叫在設備上:

ListeNameVC* listeNameVC 

if(UI_USER_INTERFACE_IDIOM()==UIUserInterfaceIdiomPad){ 
    listeNameVC = [[ListeNameVC alloc] initWithNibName:@"ListeNameVC_iPad" bundle:nil]; 
} else { 
    listeNameVC = [[ListeNameVC alloc] initWithNibName:@"ListeNameVC" bundle:nil]; 
} 

如果您需要在iPhone或iPad上以不同的方式執行操作,則可以在視圖控制器中使用UI_USER_INTERFACE_IDIOM。例如,如果你把一個UIButton編程,或者如果你的iPhone設置圖像的名稱和另一個用於iPad的

CDT

+0

謝謝你,它的作品像一個魅力:) – oybcs 2012-07-10 10:46:08

相關問題