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

Sri*_*sav 3 xcode uitableview ios swift3

   let bubbleView : UIView = {

    let view = UIView()
    view.backgroundColor = blueColor
    view.translatesAutoresizingMaskIntoConstraints = false
    view.layer.cornerRadius = 16
    view.layer.masksToBounds = true
    return view
}()


let messageImageView : UIImageView = {

    let imageView = UIImageView()
    imageView.translatesAutoresizingMaskIntoConstraints = false
    imageView.layer.cornerRadius = 16
    imageView.layer.masksToBounds = true
    imageView.contentMode = .scaleAspectFill
    return imageView

}()
init(frame: CGRect) {

    super.init(frame: frame)
}

required init?(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
}
Run Code Online (Sandbox Code Playgroud)

//像"super.init(frame:frame)"那样得到错误,因为必须调用超类"UITableViewCell"的指定初始化程序,请帮我排序这个问题,提前感谢...

kam*_*soc 7

我想你提供的代码来自UITableViewCell类型类.因此,在初始化程序中,您应该为此类调用设计的初始化程序.不是来自UIView

UITableViewCell类的指定初始化程序是

init(style: UITableViewCellStyle, reuseIdentifier: String?)

所以在你的课堂上你应该覆盖这个初始化器:

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

override init(style: UITableViewCellStyle, reuseIdentifier: String?) {
    super.init(style: style, reuseIdentifier: reuseIdentifier)
}
Run Code Online (Sandbox Code Playgroud)


Phi*_*lls 5

从文档中init(style: UITableViewCellStyle, reuseIdentifier: String?)

此方法是该类的指定初始值设定项。

super您调用的初始化程序是 for ,UIView而不是UITableViewCell.