覆盖init(编码器aDecoder:NSCoder!)不能像预期的那样工作 - Swift

Gus*_*lad 3 swift ios8

我正在尝试在Swift中子类化UITableViewCell.

我试过这个:

class CUISwitchTableViewCell: UITableViewCell {

    var label = UILabel()
    var switchControl = UISwitch()

    init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)

        // Set up UI
    }
}
Run Code Online (Sandbox Code Playgroud)

但是在调用时遇到编译错误super.init(coder: aDecoder):

必须调用超类'UITableViewCell'的指定初始值设定项

所以我理解的是我必须打电话init(style: UITableViewCellStyle, reuseIdentifier: String!),但是我将丢失Interface Builder中的所有设置.如果我没有覆盖initWithCoder我应该在哪里设置我的视图?

sal*_*140 8

如果要设置视图,或者对使用界面构建器归档的对象执行任何自定义初始化,可以通过覆盖awakeFromNib来实现.使用接口构建器创建的每个对象都将在从Nib取消存档时调用此方法.并且重写此方法还将保持接口构建器设置不变.