9
 UIStoryboard*  sb = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
    UIViewController* vc = [sb instantiateViewControllerWithIdentifier:@"SettingsViewController"];
    [[self navigationController] pushViewController:vc animated:YES];

尝试从 Storyboard 中的 NavigationController 推送视图控制器,但我不断收到此错误。

* 由于未捕获的异常“NSUnknownKeyException”而终止应用程序,原因:“[<SettingsViewController 0x1f98f100> setValue:forUndefinedKey:]:此类与键 keyPath 的键值编码不兼容。” * First throw call stack: (0x31f4a3e7 0x39c3b963 0x31f4a0d5 0x327b87d9 0x327b4543 0x31ed08a5 0x33ef5e69 0x340e5b09 0x71aa3 0x33e1b31d 0x33e9dda9 0x32859657 0x31f1f857 0x31f1f503 0x31f1e177 0x31e9123d 0x31e910c9 0x35a6f33b 0x33dad2b9 0x6567d 0x3a068b20) libc++abi.dylib: terminate called throwing an exception

4

4 回答 4

44

我收到此错误是因为我在“身份检查器”选项卡的“用户定义的运行时属性”字段中添加了一些内容。我冒昧地为 Key Path 列保留了默认的 keyPath 值,这导致了问题。

xcode 界面生成器的屏幕截图

于 2013-11-14T11:59:14.367 回答
4

很可能,故事板中定义的 SettingsViewController 包含对名为 keyPath 的 IBOutlet 的引用,但 keyPath 未在类中定义。

要进行补救,请在情节提要中选择视图控制器,选择连接检查器(右窗格中最右侧的选项卡),然后查看连接。那里可能有一个叫做 keyPath,它可能有一个“!” 靠近它。删除那个(以及任何其他带有“!”的)。

于 2013-02-18T04:33:22.310 回答
1

使用这个并检查:

UIStoryboard *mainStoryboard = [UIStoryboard storyboardWithName:@"MainStoryboard" bundle:nil];
 SettingsViewController *myVC = (SettingsViewController *)[mainStoryboard instantiateViewControllerWithIdentifier:@"SettingsViewController"];
[self.navigationController pushViewController:myVC animated:YES];
于 2013-02-18T03:53:12.767 回答
0

右键单击xib文件,作为源代码打开以找到“keyPath”。

于 2016-05-24T06:13:19.987 回答