通过 UITapGestureRecognizer 选择器向函数发送参数参数 [英] sending a parameter argument to function through UITapGestureRecognizer selector

查看:29
本文介绍了通过 UITapGestureRecognizer 选择器向函数发送参数参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 TapGestureRecognizer 制作具有可变视图数量的应用程序.当视图被按下时,我目前正在这样做

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:"))
    // ....
}

但是在我的函数handleTap"中,我想给它一个额外的参数(而不仅仅是发送者)

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

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

如何将特定标题(每个视图都唯一)作为参数发送给 handleTap 函数?

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

推荐答案

与其创建通用的 UITapGestureRecognizer,不如将其子类化并为标题添加一个属性:

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

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

我试过了.效果很好.

这篇关于通过 UITapGestureRecognizer 选择器向函数发送参数参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆