错误消息说我没有从超类中覆盖 init,即使我觉得我是

Error message saying I am not overriding init from superclass even though I feel like I am

我收到此错误消息,但我不明白为什么。这是我继承的一个项目,该项目正在使用名为 SwiftyOnboardOverlay.I 的 pod 阅读类似的问题,但 none 似乎为我解决了这个问题。

超类 init 的名称与我遇到的错误相同。

错误信息: "Initializer does not override a designated initializer from its superclass"

class WalkthroughOverlay: SwiftyOnboardOverlay {
...

 override init(frame: CGRect) {//error here
    super.init(frame:frame)
        setupViews()
    }
required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}


...
}

以及父初始化器

open class SwiftyOnboardOverlay: UIView {

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

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


}

编辑 1:

截图:

这是怎么回事?感谢您的帮助。

编辑2:

好的,所以之前的开发人员也有这些带有便利初始化器的扩展:

extension UIView {
    /// EZSwiftExtensions
    public convenience init(x: CGFloat, y: CGFloat, w: CGFloat, h: CGFloat) {
        self.init(frame: CGRect(x: x, y: y, width: w, height: h))
    }

    /// EZSwiftExtensions, puts padding around the view
    public convenience init(superView: UIView, padding: CGFloat) {
        self.init(frame: CGRect(x: superView.x + padding, y: superView.y + padding, width: superView.w - padding*2, height: superView.h - padding*2))
    }

    /// EZSwiftExtensions - Copies size of superview
    public convenience init(superView: UIView) {
        self.init(frame: CGRect(origin: CGPoint.zero, size: superView.size))
    }
}

好的,所以我需要将 public 关键字添加到超类 init 方法中以使其工作:

override public init(frame: CGRect) {
    super.init(frame: frame)
    setUp()
}