2017-09-16 4 views
-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:

スクリーンショット:

enter image description here

enter image description here

ここで何が起こっているの?助けてくれてありがとう。

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)) 
    } 
} 
+0

コードをSwiftプレイグラウンドにコピーしました。 'setup'と' setupViews'への呼び出しを取り除きました。私が得る唯一のエラーは 'WalkthroughOverlay'が必要な' init?(coder:) 'メソッドを実装する必要があるということです。 – rmaddy

+0

[初期化子はスーパークラスの指定された初期化子をオーバーライドしません](https://stackoverflow.com/questions/29031270/initializer-does-not-override-a-designed-initializer-from-its-superclass) – Honey

+0

ありがとうrmaddy。質問を編集しました。 init?(コーダー:)が実装されています。 –

答えて

0

[OK]を:

override public init(frame: CGRect) { 
    super.init(frame: frame) 
    setUp() 
} 
関連する問題