2017-03-10 54 views
1

我正嘗試在操場上使用手勢識別器,但我遇到了一些麻煩。Swift-錯誤:變量'self .___'在被初始化之前使用

這裏是我的課:「正在初始化之前使用變量‘self.fooVarSwipe’」

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 
    } 
} 

我遇到的問題是,開始「放克」跟它線爲什麼是這樣?我在外面初始化課程,但仍然顯示錯誤。

任何幫助將不勝感激! 歡呼聲,並提前致謝, Theo

回答

0

裏面讓你gr是針對自我,這是一個類foo的實例。 由於您尚未初始化其兩個變量,因此編譯器在嘗試訪問它們時會引發錯誤。 Swift不接受這種行爲。我建議你將它們聲明爲可選。

+0

所以不是「目標:自我」而應該是「目標:____」?非常感謝您的回覆! –

+0

沒有。只需聲明變量爲可選。 'var fooVarSwipe:Any ?, fooVarTap:Any?' – mattd

+0

謝謝了。有效! –