Swift - 如何在带参数的方法上调用Selector()?

时间:2014-06-28 13:54:31

标签: ios function swift selector

我正在学习Swift并需要点击我的方法,这里是代码:

var gestureRecognizer = UITapGestureRecognizer()
myView.addGestureRecognizer(gestureRecognizer)
gestureRecognizer.addTarget(self, action: Selector(dismiss(nil)))

这会返回错误 - Could not find an overload for init that accepts the supplied arguments

我也尝试了Selector("dismiss:nil")Selector("dismiss(nil)")而没有运气..

这是我打电话的方法:

func dismiss(completion: (() -> Void)!) {
    self.dismissViewControllerAnimated(true, completion: completion)
}

2 个答案:

答案 0 :(得分:18)

只需将方法名称用作字符串:

gestureRecognizer.addTarget(self, action: "dismiss:")

编辑:在Swift 3.0中,您必须使用以下语法:

gestureRecognizer.addTarget(self, action: #selector(dismiss(_:)))

答案 1 :(得分:8)

你不会在选择器中传递参数。您只表示有一个冒号。此外,您根本不必使用选择器类型。如果传入String文字,它将被转换为Selector。

gestureRecognizer.addTarget(self, action:"dismiss:")