2016-02-25 10 views
5

के माध्यम से कार्य करने के लिए पैरामीटर तर्क भेज रहा है, मैं TapGestureRecognizer के साथ सभी दृश्यों के साथ एक ऐप बना रहा हूं। जब दृश्य दबाया जाता है, मैं वर्तमान में कर रहा हूँ इसUITapGestureRecognizer चयनकर्ता

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

लेकिन मेरे समारोह "handleTap" में, मैं बहुत

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

है जैसे कि यह एक अतिरिक्त पैरामीटर (बल्कि सिर्फ इस से) देना चाहता हूँ मैं हैंडलटैप-फ़ंक्शन के लिए तर्क के रूप में विशिष्ट शीर्षक (जो प्रत्येक दृश्य के लिए अद्वितीय है) कैसे भेजूं?

उत्तर

18

इसके बजाय एक सामान्य UITapGestureRecognizer बनाने के बजाय, यह उपवर्ग और शीर्षक के लिए कोई प्रॉपर्टी जोड़ते हैं:

class MyTapGestureRecognizer: UITapGestureRecognizer { 
    var headline: String? 
} 

तो बजाय कि का उपयोग करें:

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

मैं इस कोशिश की। यह बहुत अच्छा काम किया।

+0

कार्रवाई का हिस्सा पुराना है। अब और काम नहीं कर रहा है। – SoundShock

+1

कार्रवाई: चयनकर्ता (ViewController.tapped (_ :)) func tapped (_ gestureRecognizer: MyTapGestureRecognizer) {...} – troligtvis

संबंधित मुद्दे