-1
私はこのエラーメッセージが表示されています。これは私がSwiftyOnboardOverlay.Iと呼ばれるこのポッドを使用している継承したプロジェクトからです。私は同様の質問を読むが、誰も私の問題を解決するようだ。私が私のように感じても、私はスーパークラスからinitをオーバーライドしていないと言っているエラーメッセージ
スーパークラスの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:
[OK]を、前のDEVも便利な初期化子を持つこれらの拡張機能だったので:私はこの仕事をするために、スーパークラスのinitメソッドにパブリックキーワードを追加するために必要なので
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))
}
}
コードをSwiftプレイグラウンドにコピーしました。 'setup'と' setupViews'への呼び出しを取り除きました。私が得る唯一のエラーは 'WalkthroughOverlay'が必要な' init?(coder:) 'メソッドを実装する必要があるということです。 – rmaddy
[初期化子はスーパークラスの指定された初期化子をオーバーライドしません](https://stackoverflow.com/questions/29031270/initializer-does-not-override-a-designed-initializer-from-its-superclass) – Honey
ありがとうrmaddy。質問を編集しました。 init?(コーダー:)が実装されています。 –