2011-09-23 71 views
0

我有一個通用的應用程序,我試圖共享一個viewController代碼。我有這樣的:動態加載xib但錯誤顯示

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) { 
    AboutController *screen = [[AboutController alloc] initWithNibName:@"iPhoneAboutController" bundle:nil]; 
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:screen animated:YES];  
} 
else 
{ 
    AboutController *screen = [[AboutController alloc] initWithNibName:nil bundle:nil]; 
    screen.modalTransitionStyle = UIModalTransitionStyleCrossDissolve; 
    [self presentModalViewController:screen animated:YES];  
} 

雖然這是加載,當我通過代碼,但它擊中了廈門國際銀行爲iPhone,但它似乎永遠是裝的iPad版。我知道這是因爲在iPhone的xib文件中,我手動添加了不同的背景圖像,並且它從不顯示。在iPhone模擬器中,它顯示了iPad屏幕外的版本。另外,如果我單步執行控制器中的代碼,它確實表明加載是iPhone,但顯示器是所有iPad對象。在iPhone xib中,我將文件所有者設置爲AboutController。

這是我第一次嘗試「共享代碼」。我知道我可以用相同的代碼創建單獨的類文件,但這似乎毫無意義。任何幫助是極大的讚賞。

地理...

+0

我們可以看到AboutController的initWithNibName方法嗎?這可能是問題的出處。另外,這可能是放置這種邏輯的更好的地方。只是一個想法。 – picciano

+0

是的,它確實有一個我註釋掉了,它仍然只加載iPad版本。 – George

回答

0

對於初學者:請確保你不要在你的AboutController覆蓋筆尖初始化。

如果沒有,請嘗試清理您的項目(同時刪除您的應用程序的文件夾~/Library/Developer/Xcode/DerivedData)。也從設備上卸載應用程序,然後重新生成。

+0

嘗試了所有這一切,它仍然加載iPad的xib。 Arrhhh! – George