2015-10-05 46 views
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' *** 
+0

嘗試閱讀此問題http://stackoverflow.com/questions/28201249/swift-assign-a-nib-to-self-in-class –

回答

-1

嗨,我這種情況下崩潰xib文件是UIViewController類。 我更改xib文件FileOwners刪除視圖連接 併爲我工作

相關問題