2017-03-03 104 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加載自定義視圖控制器到另一個視圖控制器的人。

相關問題