0
我想把一個xib文件作爲子視圖在我的主視圖控制器,我得到一個非常奇怪的錯誤消息;不能添加自我作爲子視圖 - 當添加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)
}
}
它正在工作......那麼,爲什麼第一個代碼不工作!?
編輯:
,當我試圖把兩個子視圖:
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' ***
嘗試閱讀此問題http://stackoverflow.com/questions/28201249/swift-assign-a-nib-to-self-in-class –