[英]iPhone App view fails to load in iPad but loads in iPhone simulator
我在iPad中模擬“僅iPhone”應用程序。 二進制文件在iPhone模擬器中的模擬效果很好,但是嘗試在iPad上進行模擬時,會顯示初始背景圖像,但隨后屏幕只會變黑。 (Xcode v4.1,SDK 4.1)
該應用程序只有一個視圖,該視圖由單個自定義UIViewController控制。 (SoloViewController)由SoloViewController管理的唯一視圖包含在一個名為“ mainview.xib”的“分離”筆尖中。
我像這樣在我的AppDelegate中初始化SoloViewController:
- (void)applicationDidFinishLaunching:(UIApplication *)application {
SoloViewController *vc = [[SoloViewController alloc] initWithNibName:@"mainview" bundle:[NSBundle mainBundle]];
self.soloViewController=vc;
[vc release];
[window addSubview:[soloViewController view]];
[window makeKeyAndVisible];
}
我的Info.plist文件的“主筆尖文件基本名稱”設置為“ MainWindow”,我相信這是首次創建基於ViewController的項目時默認的Xcode。 無論如何,我還是照原樣離開了。 但是,當嘗試在iPad中進行模擬時,日志顯示:
Failed to load NSMainNibFile MainWindow.
iPhone模擬器和硬件對此沒有問題。
如果將“ Main nib文件的基本名稱”鍵設置為“ mainview”以將xib文件用於視圖,則會收到此錯誤:
Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<UIApplication 0x7a01270> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key view.'
我仔細檢查了IB中的xib,所有插座均已正確定義並連接到SoloViewController.h和SoloViewController.m。 我在這里做錯了什么!
另外-如果我將NSMainNibFile留空,那么iPhone模擬器只會出現黑屏。 (日志中沒有錯誤)
事實證明,該項目需要MainWindow.xib文件。 就我而言,我無意中從原始項目模板中刪除了該文件,並認為它是可以的,因為它可以在硬件上模擬並運行良好。 (iPhone)MainWindow.xib文件需要類型為“ UIApplication”的文件所有者,類型為“ UIResponder”的第一響應者,指向您的應用程序委托的自定義類型的應用程序委托。 (名稱將根據您為項目命名的名稱而有所不同)。最后是一個UIWindow類型的Window。 所有這些都是默認設置,但App Delegate除外。
一旦包含以這種方式配置的xib,該應用程序就會在iPhone和iPad模擬器中按預期加載。 (關於iPad模擬器為什么以不同方式對待缺少MainWindow.xib文件的原因尚不清楚)
當您在iOS 4x或更高版本中定義的代碼(或通過IB代碼生成)中引用常量時,而iPad在3.2x上運行,而對這些鍵定義一無所知時,可能會發生類似的行為。
確保目標已將iOS部署目標設置為iOS 3.2,並將基本SDK設置為4.1。 如果更改了這些值,請在重新編譯之前進行清理。 不幸的是,在這種情況下,我認為您不會看到編譯器警告。
希望有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.