2017-03-03 80 views
-1

UPDATE:答案从XIB到主视图控制器加载自定义视图控制器发出NSUnknownKeyException

我贴我的回答下面这解决了这个问题对我来说。问题的原因与提出的帖子完全不同。

原题:

我试图加载从它被定义为一个一个的ViewController厦门国际银行文件的UIView。

 if let overlayView = (Bundle.main.loadNibNamed("CalendarViewController", owner: self, options: nil)?.first as? JTAppleCalendarView) { 
     self.navigationController?.view.addSubview(overlayView) 
    } 

但是,每次运行项目时,我都会得到未知的键异常。

Terminating app due to uncaught exception 'NSUnknownKeyException', reason: '[<MyApp.ViewController 0x7feac8607cc0> setValue:forUndefinedKey:]: this class is not key value coding-compliant for the key calendarView.' 

我在xib文件中有一个视图,我通过IBOutlet连接到它的所有者(视图控制器)。这个密钥是作为导致错误的那个给出的。但是,当我查看UIView的参考网点时,它们的信誉良好。

我试着删除引用并重新添加它,并试图通过指定所有者到xib的视图控制器来加载xib。仍然没有运气。

更新:参考文献

enter image description here

另外的XIB的XML的连接部分:

  <connections> 
      <outlet property="calendarView" destination="dqi-m5-FXD" id="mAV-5Y-SXl"/> 
     </connections> 

相关代码:

https://github.com/cooderatgit/CalendarApp

+0

可能的重复[这是什么意思? “'NSUnknownKeyException',原因:...这个类不是关键值编码兼容的关键X”](http://stackoverflow.com/questions/3088059/what-does-this-mean-nsunknownkeyexception-reason-this- class-is-not-key-v) – dan

+0

我经历过那篇文章。但是,在那里给出的解决方案没有帮助我解决问题 – c00der

回答

2

由于IBOutlet链接断开,您将收到此错误。转到所选视图控制器的xib/storyboard中的插座选项卡,并使用'!'查找插座连接,将其删除并构建。

+0

谢谢。我检查了网点的一致性(只有一个网点),但是我看不出有什么问题。我会用截图更新我的问题。 – c00der

+0

出现此错误是因为出口连接无效。我建议断开并重新连接插座,如果这不起作用从主视图删除视图,然后再次添加它。希望这可以帮助! –

+0

当然。谢谢。我会放弃这个选择。 – c00der

0

试试这个:

let overlayView = (Bundle.main.loadNibNamed("CalendarViewController", owner: self, options: nil)?.first as? CalendarViewController 
    self.navigationController?.view.addSubview(overlayView) 
0

解决此问题的方法如下:

  1. 创建XIB选择一个UIViewController检查
  2. 转到厦门国际银行文件并删除根视图这是呈现
  3. 添加一个UIViewController从对象库到IB。现在, 根的厦门国际银行是一个UIViewController(不通过的XCode生成的默认视图)
  4. 转到新添加的视图控制器的身份检查和 更改自定义类视图控制器迅速文件,这是 创建(这是我哪里错在先,我试图分配 一个视图控制器的自定义类由 的XCode默认创建的视图)
  5. 然后建立视图控制器 源和视图之间的出口连接。

这解决了我的问题。回顾一下,这种方法是有道理的。正如其他答案所指出的,事实上,参考连接存在问题。但是,这是由于完全不同的原因而发生的,例如,意外删除参考连接。 XCode无法通过自定义类设置在视图和视图控制器之间建立彼此没有关联的连接。希望这会帮助任何试图从xib加载自定义视图控制器到另一个视图控制器的人。

相关问题