我正在学习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)
}
答案 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:")