sending a parameter argument to function through UITapGestureRecognizer selector

I am making an app with a variable amount of views all with a TapGestureRecognizer. When the view is pressed, i currently am doing this

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

but in my function “handleTap”, i want to give it an additional parameter (rather than just the sender) like so

  • How to enable “tap and slide” in a UISlider?
  • Handling Tap Gesture in a UICollectionView
  • How to tap to zoom and double tap to zoom out in iOS?
  • Pass a NSDictionary as parameter to UITapGestureRecognizer
  • UITapGestureRecognizer crashes on multiple taps
  • How to compare the types of gestures on iOS?
  • func handleTap(sender: UITapGestureRecognizer? = nil, headline: String) {
    }
    

    How do i send the specific headline (which is unique to every view) as an argument to the handleTap-function?

    Solutions Collect From Internet About “sending a parameter argument to function through UITapGestureRecognizer selector”

    Instead of creating a generic UITapGestureRecognizer, subclass it and add a property for the headline:

    class MyTapGestureRecognizer: UITapGestureRecognizer {
        var headline: String?
    }
    

    Then use that instead:

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

    I tried this. It worked great.