仅在通用应用程序中在iPad上加载主xib时崩溃?

时间:2011-12-07 17:53:14

标签: ios ipad xib universal

我有一个通用的应用程序,但这个问题似乎只涉及iPad而不是iPhone,因为iPhone版本加载了正确的XIB。

问题非常严重,它没有为我的应用加载我的主XIB。 我将XIB命名为:

  1. 适用于iPhone:MyViewController.xib

    1. 适用于iPad:MyViewController_iPad.xib
  2. 此外,我删除了我的MainWindow.xib,因为在通用应用程序的模板项目中,它在任何地方都没有显示MainWindow.xib。

    这就是我尝试在应用启动时加载视图的方式:

    self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
    if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
            self.viewController = [[[ocrapiViewController alloc] initWithNibName:@"MyViewController" bundle:nil] autorelease];
        } else {
            self.viewController = [[[ocrapiViewController alloc] initWithNibName:@"MyViewController_iPad" bundle:nil] autorelease];
        }
     self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
    return YES;
    

    这是崩溃信息: 这一行上的SIGABRT [self.window makeKeyAndVisible];

    这是崩溃日志:

    2011-12-07 07:37:46.560 ocrapi[763:607] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </var/mobile/Applications/29F4CD7A-149E-46EA-B280-3D188PP19D17/.app> (loaded)' with name 'MyViewController_iPad''
    

    EDIT1 : 以下是信息:

    warning: No copy of <No file name> found locally, reading from memory on remote device.  This may slow down the debug session.
    

    此外,如果我点击我的产品然后在finder中显示,然后显示包内容,MyViewController.xib或MyViewController_iPad.xib不存在。它应该是那样的吗?

1 个答案:

答案 0 :(得分:2)

确保您的笔尖确实真的被称为MyViewController_iPad.xib,具有确切的大小写。

确保xib文件位于目标列表中,以便在构建时复制到应用程序。

最后,确保Info.plist文件中仍然没有主Nib设置。

哦,还有一件事。这段代码不需要:

if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPhone) {
    self.viewController = [[[ocrapiViewController alloc] initWithNibName:@"MyViewController" bundle:nil] autorelease];
} else {
    self.viewController = [[[ocrapiViewController alloc] initWithNibName:@"MyViewController_iPad" bundle:nil] autorelease];
}

只需致电initWithNibName:@"MyViewController"即可。如果您的iPad笔尖名为 MyViewController~ipo.xib (请注意小提琴,请注意小写的“ipad”),当您在iPad上时,它将自动被选中。