自定义视图 - 在“required init?(coder aDecoder: NSCoder)”方法中崩溃

Dil*_*ili 2 init ios swift

代码:

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

}
Run Code Online (Sandbox Code Playgroud)

碰撞:

在finishInit() 方法上,同时设置标签背景颜色

fatal error: unexpectedly found nil while unwrapping an Optional value
Run Code Online (Sandbox Code Playgroud)

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

Tho*_*cic 6

init方法运行并返回时,尚未建立出口的连接。因此插座是静止的nil,你在使用它时会崩溃。

您应该能够通过在 之后添加一个问号 (?) 来测试这一点titleLabel,从而再次将其视为可选项。

titleLabel?.backgroundColor = UIColor.white

然后你不会崩溃,但如果标签仍然为零,当然这条线也不会做任何事情。

因此,您需要稍后调用使用插座的代码(您似乎正在使用setView?

您可以使用awakeFromNib应设置插座的位置。