概要
イニシャライザでnibを呼び出す時に次のようなエラーが出た。
*** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: '-[UIViewController _loadViewFromNibNamed:bundle:] loaded the "xxxViewController" nib but the view outlet was not set.'
init()
init() {
super.init(nibName: UserSearchViewController.className, bundle: nil)
}
loadViewで呼び出した時はこのエラーがでなかった。
loadView()
override func loadView() {
guard let view = UINib(nibName: "UserSearchViewController", bundle: nil).instantiate(withOwner: self, options: nil).first as? UIView else { return }
self.view = view
}
結論
- ①InspectorのFile`sOwnerにCustomClassをセットする。
- ②Placeholders>File`s OwnerからViewにOutletで接続する。(※画像を参考)
これでエラーがでなくなりました。
コードで実装していたときは、Ownerを指定したのに、init()の時はnibをロードするだけでOwnerを指定していたなかったのが原因かと思われます。