【问题标题】:Swift - How to call Selector() on method with arguments? [duplicate]Swift - 如何在带有参数的方法上调用 Selector()? [复制]
【发布时间】:2014-08-19 11:44:18
【问题描述】:

我正在学习 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)
}

【问题讨论】:

  • 您引用的答案没有回答这个问题,即询问如何将参数传递给函数。例如,dismiss() vs dismiss(theParameter :String)。

标签: ios function swift selector


【解决方案1】:

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

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

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

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

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

    • 那么你在哪里传递参数?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-19
    • 2013-03-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多