簡體   English   中英

iPhone App視圖無法在iPad中加載,但在iPhone模擬器中加載

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM