2012-08-16 89 views
0

我有一個通用的應用程序,可以在模擬器上正常工作,但是當我將它放在實際設備(4S和第三代iPad)上時,View控制器界面(「EditNameViewControlleriPhone」事實上iPhone是這個名字的一部分),儘管我也有一個iPad xib,但它只出現在iPhone版本中。不正確的界面出現在iOS設備上,但不是模擬器

下面是我如何命名的東西的屏幕截圖:

enter image description here

在我SettingViewController A鍵可以調出EditName接口。下面是他的代碼:

-(IBAction)editclass{ 
    EditNameViewControlleriPhone*vc2 = [[EditNameViewControlleriPhone alloc] init]; 
    vc2.delegate = self; 
    [self presentModalViewController:vc2 animated:YES]; 
} 

-(void)dismiss{ 
    [self dismissModalViewControllerAnimated:YES]; 
} 

這段代碼錯誤或有我失蹤或者是別的一些命名慣例?對不起,如果這真的很簡單 - 我是Xcode的新手。 感謝

回答

1

您可以使用下面的代碼手動加載正確的接口來控制:

-(IBAction)editclass{ 
    EditNameViewControlleriPhone *vc2; 
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
     vc2 = [[EditNameViewControlleriPhone alloc] initWithNibName:@"EditNameViewControlleriPhone_iPhone" bundle:nil]; 
    } else { 
     vc2 = [[EditNameViewControlleriPhone alloc] initWithNibName:@"EditNameViewControlleriPhone_iPad" bundle:nil]; 
    } 
    vc2.delegate = self; 
    [self presentModalViewController:vc2 animated:YES]; 
} 

if-子句檢查您的當前設備是iPad還是iPhone。該子句中的初始化程序使用正確的xib文件實例化viewController。


或者,你可以通過遵循一個簡單的命名方案讓系統做到這一點;

EditNameViewControlleriPhone~iphone.xib爲您的iPhone版本 EditNameViewControlleriPhone~ipad.xib你的iPad版本

這樣一來,你的代碼可能會保持原樣。


無論何時你發現在不被使用的設備或模擬器,反之亦然文件之間的差異,通常的原因是資金問題。模擬器通常不區分大小寫(取決於您的OSX文件系統),該設備區分大小寫(始終)。


最後但並非最不重要的,構建清潔往往沒有奇蹟時,事情依然沒有保持合理的解釋竊聽。

+0

〜s和一個建立乾淨的伎倆。謝謝!! – 2012-08-16 22:16:10

0

Target,有一個名爲Summary選項卡,勾選你的界面了你使用了正確的接口

+0

如何找到目標? – 2012-08-16 21:54:16

+0

@GregM使用'顯示Project Navigator按鈕'或使用cmd + 0 shorcut.It將在名稱與您的項目名稱相同的頂部 – limon 2012-08-16 22:00:31

+0

摘要選項卡是否僅包含文件夾圖標?我試圖提出的視圖控制器的名稱似乎是正確的(包括大寫)。你可以看到我命名的東西的截圖。 – 2012-08-16 22:10:01

相關問題