自定义视图 - “必需的init?(编码器aDecoder:NSCoder)”方法崩溃

时间:2017-11-12 08:16:25

标签: ios swift init

代码:

class HeaderView: UIView {

@IBOutlet weak var titleLabel: UILabel!

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

func finishInit() {
    titleLabel.backgroundColor = UIColor.white
}

func setView(withTitle title: String?) {
    titleLabel.backgroundColor  = UIColor.white
    titleLabel.text = title

}

崩溃:

在finishInit()方法中,设置标签背景颜色

fatal error: unexpectedly found nil while unwrapping an Optional value

但同样,在setView()方法上,并没有崩溃。

1 个答案:

答案 0 :(得分:4)

init方法运行并返回时,尚未建立出口连接。因此,出口仍为nil,并且在使用时会崩溃。

您应该可以通过在titleLabel之后添加问号(?)来对此进行测试,从而将其视为可选项。

titleLabel?.backgroundColor = UIColor.white

然后你不会崩溃,但如果标签仍为零,那么该行当然也不会做任何事情。

所以你需要稍后调用使用这些出口的代码(你似乎在使用setView吗?

您可以使用awakeFromNib来设置出口。