2017-03-10 5 views
1

私は運動場でジェスチャー認識機能を使用しようとしていますが、問題があります。 「初期化される前に使用変数 『self.fooVarSwipe』を」早送りエラー:初期化前に変数 'self .___'が使用されています

class foo { 

    var fooVarSwipe: Any 
    var fooVarTap: Any 

    init() { 

     let gr = UISwipeGestureRecognizer(target: self, action: #selector(foo.bar)) 
     let tr = UITapGestureRecognizer(target: self, action: #selector(foo.tar)) 
     helloApple.addGestureRecognizer(gr) 
     helloApple.addGestureRecognizer(tr) 
     helloApple.isUserInteractionEnabled = true 
     self.fooVarSwipe = gr 
     self.fooVarTap = tr 

    } 



    @objc func tar() { 
     print("tapped") 
    } 

    @objc func bar() { 
     print("swiped") 
     currentViewNum = 1 
    } 
} 

私が午前の問題は、それが言っている「GRが聞かせて」で始まる行に:ここで

は私のクラスでありますどうしてこれなの?私はクラスを外部に初期化しますが、それでも私はエラーを表示しています。

ご協力いただければ幸いです。 あらかじめお返事ありがとうございます。 Theo

答えて

0

あなたは自分自身をターゲットにしています。これはfooクラスのインスタンスです。 2つの変数を初期化していないため、コンパイラにアクセスしようとするとコンパイラはエラーをスローします。 Swiftはこの動作を受け入れません。私はそれらをオプションとして宣言することをお勧めします。

+0

"target:self"ではなく、 "target:____"にする必要がありますか?応答してくれてありがとう! –

+0

Nope。変数をオプションとして宣言するだけです。 'var fooVarSwipe:Any ?, fooVarTap:Any? ' – mattd

+0

ありがとう。出来た! –

関連する問題