我在Xcode 4.3.3中创建了一个通用窗口应用程序。后来我添加了一个没有XIB的View Controller(UniversalRootViewController)类。然后我创建了两个XIB文件(RootViewController_iPhone,RootViewController_iPad),然后将这些iPhone XIB文件RootViewController_iPhone连接到UniversalRootViewController类:RootViewController_iPhone - >选择File's Owner并将Identity Inspector中的类名更改为UniversalRootViewController,然后将视图作为插座连接到UniversalViewController,并为RootViewController_iPad执行相同的操作。
在App Delegate中,我添加了以下代码行。
UniversalRootViewController *controller = nil;
if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
{
controller = [[UniversalRootViewController alloc] initWithNibName:@"RootViewController_iPad" bundle:[NSBundle mainBundle]];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:controller];
[self.window addSubview:navigationController.view];
}
else
{
controller = [[UniversalRootViewController alloc] initWithNibName:@"RootViewController_iPhone" bundle:[NSBundle mainBundle]];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:controller];
[self.window addSubview:controller];
}
我还在UniversalApp-Info.plist中添加了这两个键值对 主nib文件基名:RootViewController_iPhone 主nib文件基名(iPad):RootViewController_iPad
当我运行此应用程序时,应用程序会通过显示以下错误消息来创建。
由于未捕获的异常'NSUnknownKeyException'而终止应用程序,原因:'[setValue:forUndefinedKey:]:此类不是键视图的键值编码兼容。'
我将XIB文件正确连接到View Controller。我不知道应用程序崩溃的原因。请告诉我解决方案。
答案 0 :(得分:1)
您必须将文件所有者中的视图出口设置为XIB文件中的每个视图: - 转到其中一个XIB文件(例如iphone),然后使用鼠标左键从文件所有者拖动到对象下面的顶视图。选择视图。 - 对其他XIB文件执行相同操作
答案 1 :(得分:0)
我通过删除Universal-Info.plist中的两个Nib文件的键值对来解决了我的问题。现在,该应用程序可以完美运行而不会发生任何崩溃。