マスターviewControllerにサブビューとしてxibファイルを配置しようとしていますが、本当に奇妙なエラーメッセージが表示されます。
このコードがある場合:
class MyViewController: UIInputViewController {
var mainView : UIView!
override func viewDidLoad() {
super.viewDidLoad()
mainView = UINib(nibName: "MainView", bundle: nil).instantiateWithOwner(self, options: nil)[0] as! UIView
self.view.addSubview(mainView)
}
}
次のエラー メッセージが表示されます。
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't add self as subview' ***
しかし、私がこのコードを持っているとき:
class MyViewController: UIInputViewController {
override func viewDidLoad() {
super.viewDidLoad()
let subViewsArray = [
UINib(nibName: "MainView", bundle: nil).instantiateWithOwner(self, options: nil)[0] as! UIView
]
self.view.addSubview(subViewsArray[0])
}
}
または単にこれ:
class MyViewController: UIInputViewController {
override func viewDidLoad() {
super.viewDidLoad()
self.view.addSubview(UINib(nibName: "mainView", bundle: nil).instantiateWithOwner(self, options: nil)[0] as UIView)
}
}
それは機能しています...では、なぜ最初のコードが機能しないのですか!?
編集 :
そして、2つのサブビューを配置しようとしているとき:
class MyViewController: UIInputViewController {
override func viewDidLoad() {
super.viewDidLoad()
let subViewsArray = [
UINib(nibName: "MainView", bundle: nil).instantiateWithOwner(self, options: nil)[0] as! UIView,
UINib(nibName: "AnotherView", bundle: nil).instantiateWithOwner(self, options: nil)[0] as! UIView
]
self.view.addSubview(subViewsArray[0])
self.view.addSubview(subViewsArray[1])
}
}
同じエラーメッセージで動作しなくなりました:
*** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: 'Can't add self as subview' ***