使用多个XIB和单个View Controller创建通用应用程序时,应用程序崩溃

时间:2012-10-17 08:31:31

标签: xcode4.3 ios-universal-app

我在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。我不知道应用程序崩溃的原因。请告诉我解决方案。

2 个答案:

答案 0 :(得分:1)

您必须将文件所有者中的视图出口设置为XIB文件中的每个视图: - 转到其中一个XIB文件(例如iphone),然后使用鼠标左键从文件所有者拖动到对象下面的顶视图。选择视图。 - 对其他XIB文件执行相同操作

答案 1 :(得分:0)

我通过删除Universal-Info.plist中的两个Nib文件的键值对来解决了我的问题。现在,该应用程序可以完美运行而不会发生任何崩溃。I removed the following two lines