iPhone App视图无法在iPad中加载,但在iPhone模拟器中加载

时间:2010-09-23 23:36:36

标签: iphone ipad initialization ios-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文件将“主nib文件基本名称”设置为“MainWindow”,我相信这是Xcode首次创建基于ViewController的项目时的默认设置。无论如何,我只是原样离开了。但是,当试图在iPad中进行模拟时,日志会显示:

Failed to load NSMainNibFile MainWindow.

iPhone模拟器和硬件对此没有任何问题......

如果我将“主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&amp; SoloViewController.m。我在这做错了什么!?

另外 - 如果我将NSMainNibFile留空,那么iPhone模拟器就会出现黑屏。 (日志中没有错误)

2 个答案:

答案 0 :(得分:2)

事实证明,该项目需要一个MainWindow.xib文件。在我的情况下,我无意中从原始项目模板中删除了该文件并认为它没问题,因为它模拟并在硬件中运行良好。 (iPhone)MainWindow.xib文件需要“UIApplication”类型的文件所有者,“UIResponder”类型的First Responder,指向应用程序委托的自定义类型的App Delegate。 (名称将根据您为项目命名的内容而有所不同)最后有一个UIWindow类型的窗口。所有这些都是默认设置,App Delegate除外。

一旦我加入了以这种方式配置的xib,应用程序就会按预期加载iPhone和iPad。 iPad模拟器。 (仍然不清楚iPad模拟器为什么不同地处理MainWindow.xib文件的缺失)

答案 1 :(得分:0)

当您在iOS 4x或更高版本中定义的代码中引用常量(或通过IB代码生成)时会发生类似的行为,而iPad运行3.2x,并且对这些键定义一无所知。

确保您的目标的iOS部署目标设置为iOS 3.2,Base SDK设置为4.1。如果更改了这些值,请在重新编译之前进行清理。不幸的是,在这种情况下,我认为你不会看到编译器警告。

希望有所帮助。