2015-10-05 75 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删除视图连接 并为我工作

相关问题