提问者:小点点

Swift-如何对带有参数的方法调用Selector()?[副本]


我正在学习Swift,需要随时调用我的方法,下面是代码:

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

返回错误-找不到接受所提供参数的init重载

我也试过像选择器(“dississ:nil”)选择器(“dississ:nil”)都没有成功。

这里是我调用的方法:

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

共2个答案

匿名用户

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

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

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

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

匿名用户

不能在选择器中传递参数。你只代表有一个带冒号的。此外,您根本不需要使用选择器类型。如果传入字符串文本,它将转换为您的选择器。

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