我收到此错误消息,我不明白为什么。这是我继承的一个项目,它正在使用这个名为SwiftyOnboardOverlay的pod。我读过类似的问题,但似乎没有人为我解决这个问题。
超级类init的名称与我收到错误的名称相同。
错误讯息: “初始化程序不会覆盖其超类”
中指定的初始值设定项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:
截图:
这里发生了什么?谢谢你的帮助。
EDIT2:
好的,所以前面的开发人员也使用了方便的初始化器进行了这些扩展:
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))
}
}
答案 0 :(得分:0)
好的,所以我需要将public关键字添加到超类init方法中以使其工作:
override public init(frame: CGRect) {
super.init(frame: frame)
setUp()
}