我正在尝试为 UIView 创建自定义 init 方法。代码如下:

convenience init(frame: CGRect, tutorProfileImageURL: String?) {
        self.tutorProfileImageURL = tutorProfileImageURL
        super.init(frame: frame)
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        setup()
    }

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

    func setup() {
        _ = Bundle.main.loadNibNamed("TutorArrivedAlertView", owner: self, options: nil)?[0] as! UIView
        self.addSubview(customView)
        customView.frame = self.bounds
        tutorImageView.layer.cornerRadius = tutorImageView.frame.size.height/2
        tutorImageView.clipsToBounds = true
    }

但是我收到错误:

最佳答案

这个错误表明,我们不应该将便利初始化器与其父类(super class)初始化器链接起来。

我们需要调用以下方法



在这个方法里面



这是它的样子:

convenience init(frame: CGRect, tutorProfileImageURL: String?) {
    self.init(frame: frame)
    self.tutorProfileImageURL = tutorProfileImageURL
}

override init(frame: CGRect) {
    super.init(frame: frame)
    setup()
}

Check difference between Convenience and Designation initializers

关于ios - 便利初始化器必须为自定义 UIView 初始化器委托(delegate) self.init 错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42548096/

10-11 21:23