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

时间:2014-07-19 13:05:06

标签: swift ios8

我试图在Swift中继承UITableViewCell。

我试过这个:

class CUISwitchTableViewCell: UITableViewCell {

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

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

        // Set up UI
    }
}

但是在调用super.init(coder: aDecoder)时出现编译器错误:

  

必须调用超类的指定初始化程序' UITableViewCell'

所以我理解的是我必须调用init(style: UITableViewCellStyle, reuseIdentifier: String!),但之后我将丢失在Interface Builder中进行的所有设置。如果我没有覆盖initWithCoder我应该在哪里设置我的观点?

1 个答案:

答案 0 :(得分:8)

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