2

マスター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' ***
4

0 に答える 0