我试图将UILabel与在类中创建的IBOutlet链接起来。

我的应用程序崩溃与以下错误。

这是什么意思?

我该怎么解决呢?

***终止应用由于未捕获异常'NSUnknownKeyException',原因:'[<UIViewController 0x6e36ae0> setValue:forUndefinedKey:]:这个类不是键值编码兼容的键XXX。'


当前回答

我得到了同样的错误,当我手动加载一个视图从一个笔尖。结果是我忘记设置视图的所有者。

例如,如果你以以下方式加载一个视图,

 let view = Bundle.main.loadNibNamed("MyNibFileName",
                                 owner: nil,
                                 options: nil)?.first as! UIView

然后添加一个IBOutlet, IBOutlet不能被引用,应用程序会因为上面的错误而崩溃。

修复:为视图分配一个所有者。

 let view = Bundle.main.loadNibNamed("MyNibFileName",
                                 owner: self,
                                 options: nil)?.first as! UIView

其他回答

它可能来自于这样一个事实,即您拖动并创建了一个出口或操作,但忘记删除它。即使你删除了代码,或者即使你已经创建了足够的cmd+Z,你也需要进入故事板的连接检查器,看看你创建的动作或出口是否仍然在这里。

您只需要指定IBOutlet一次,IBOutlet标签您的ivar是不必要的。 你在用你的UIViewController实例化你的NIB吗?在某些时候,你应该调用[SecondView initWithNibName:@"yourNibName" bundle:nil];

就我而言,

[[NSBundle mainBundle] loadNibNamed:@"NameOfTheSubviewNibFile" owner:self options:nil]

这就是原因。

将此替换为initWithNibName,已解决。

我不得不从模拟器/iPhone中删除应用程序来消除这个错误。

我也有同样的问题。我重置了模拟器。删除和添加按钮控件。终于搞干净了。:)由于堆栈溢出。不知怎么的,我的代码变得很好,开始工作。