我正在尝试将我准备好的UIView嵌入到故事板中,该UIView位于xib文件中.
到目前为止我所做的是:
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)
}
}
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,我得到了错误的访问内存异常.从查看堆栈跟踪我看到一大堆对initWithCoder的调用 http://i.stack.imgur.com/iH6Am.png 我不知道为什么NSBundle.mainBundle().loadNibNamed导致这个,有什么想法吗?
对于未来的寻求者......
简介:required init?(coder aDecoder: NSCoder)
当您不小心在 ContentView 的身份检查器中设置自定义视图类时,会发生递归调用。
当编译器尝试加载你的 Nib 文件(所有者视图)时,它首先需要启动你的ContentView
(见下图),如果你错误地为你的ContentView
或它的任何子视图设置了自定义类,它会经历另一个 Nib 加载过程并陷入递归无限循环。
要以正确的方式做到这一点,您应该只为占位符部分中的视图设置自定义视图类。请参见下图中的 1 和 2。
在这张图片中,我定义了一个名为CardView
.
归档时间: |
|
查看次数: |
1332 次 |
最近记录: |