2016-02-25 29 views
5

aracılığıyla işlev için bir parametre argümanının gönderilmesi Tüm bir TapGestureRecognizer ile çeşitli görünümler içeren bir uygulama yapıyorum. görünüm basıldığında, ben şu anda yapıyorum buUITapGestureRecognizer seçici

func addView(headline: String) { 
    // ... 
    let theHeadline = headline 
    let tapRecognizer = UITapGestureRecognizer(target: self, action: Selector("handleTap:")) 
    // .... 
} 

ama benim fonksiyonu "handleTap" in, ben çok

func handleTap(sender: UITapGestureRecognizer? = nil, headline: String) { 
} 

gibi o (yerine sadece gönderene yerine) ek bir parametre vermek istiyorum HandleTap işlevine bir argüman olarak (her görünüm için benzersiz olan) belirli başlığı nasıl gönderirim?

cevap

18

yerine jenerik UITapGestureRecognizer yaratma, alt sınıf ve başlığa ilişkin bir özellik ekleyin:

class MyTapGestureRecognizer: UITapGestureRecognizer { 
    var headline: String? 
} 

Sonra yerine o kullanın:
override func viewDidLoad() { 
    super.viewDidLoad() 

    let gestureRecognizer = MyTapGestureRecognizer(target: self, action: "tapped:") 
    gestureRecognizer.headline = "Kilroy was here." 
    view1.addGestureRecognizer(gestureRecognizer) 
} 

func tapped(gestureRecognizer: MyTapGestureRecognizer) { 
    if let headline = gestureRecognizer.headline { 
     // Do fun stuff. 
    } 
} 

Bu çalıştı. Harika çalıştı.

+0

eylem parçası güncel değil. Ayrıca artık işe yaramıyor. – SoundShock

+1

eylem: seçici (ViewController.tapped (_ :)) func tapped (_ hareketRecognizer: MyTapGestureRecognizer) {...} – troligtvis