我有一个通用的应用程序,但这个问题似乎只涉及iPad而不是iPhone,因为iPhone版本加载了正确的XIB。
问题非常严重,它没有为我的应用加载我的主XIB。 我将XIB命名为:
适用于iPhone:MyViewController.xib
此外,我删除了我的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不存在。它应该是那样的吗?
答案 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上时,它将自动被选中。