如何在带参数的方法上调用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)
}

只使用方法名作为字符串:

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

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

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

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

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

最新更新