如何将多个参数传递给选择器函数

时间:2016-05-04 06:37:34

标签: ios swift uigesturerecognizer selector

我有一个子视图,它有一个选择器

let subView1: CustomSubView = CustomSubView(frame: CGRect(x: 0, y: 0 , width: xx, height: yy))

    subView1.label.text = "Lorem Ipsum"
    cell.scroller.addSubview(subView1)
let gesture = UITapGestureRecognizer(target: self, action: #selector(self.subView1Action(_:)))
    subView1.addGestureRecognizer(gesture)

func subView1Action(sender:UITapGestureRecognizer){
        print("Wow Subview1 is clicked")
    }

现在,我想将标签文本发送到选择器功能。我该怎么做? 如果我使选择器功能像:

func subView1Action(sender:UITapGestureRecognizer , label:String){
        print(label)
    }

我应该怎么称呼它?

3 个答案:

答案 0 :(得分:0)

您无法更改委托回调签名。

但是对于您的情况,您可以使用sender.view取回UILabel。

func subView1Action(sender:UITapGestureRecognizer){
    if let label = sender.view as? UILabel {
        print(label.text)
    }
}

答案 1 :(得分:0)

你弄错了。 将UITapGestureRecognizer设置为选择器时,识别器对象将仅使用“sender”调用选择器。所以基本上你不能添加任何东西。

如果字符串是点击视图的属性,您可以从识别器访问它,否则您将不得不以其他方式传递它。

func someAction(sender:UITapGestureRecognizer){
    if let label = sender.view as? UILabel {
        print(label)
    }
}

答案 2 :(得分:0)

只需使UITapGestureRecognizer成为唯一的函数参数即可。然后,您可以使用sender.view as? UILabel访问标签。