我试图将我准备的UIView(位于xib文件中)嵌入到 Storyboard 中。

到目前为止,我所做的是:

class TestUIView : UIView {
    @IBOutlet weak private var firstButton: UIButton!
    @IBOutlet weak private var secondButton: UIButton!

    // MARK - Lifetime

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        let view = NSBundle.mainBundle().loadNibNamed("TestUIView", owner: self, options: nil).first as! TestUIView

        self.addSubview(view)
    }
}

但是由于某种原因,我得到了错误的访问内存异常。
通过查看堆栈跟踪,我看到了对initWithCoder的大量调用
http://i.stack.imgur.com/iH6Am.png
我不确定为什么NSBundle.mainBundle()。loadNibNamed会导致这种情况,有什么想法吗?

最佳答案

原来,我做错了什么是如何准备.xib文件,设置了View本身而不是TestUIView类的文件所有者。
更改文件所有者(并重置约束)后,一切正常。

关于ios - 带有编码器的UIView初始化会导致递归,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33982452/

10-09 12:54