当前位置: 首页 > 知识库问答 >
问题:

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

赵奕
2023-03-14

我正在学习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个答案

鲁旭
2023-03-14

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

gestureRecognizer.addTarget(self, action:"dismiss:")
狄兴业
2023-03-14

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

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

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

gestureRecognizer.addTarget(self, action: #selector(dismiss(_:)))
 类似资料:
  • 问题内容: 在我的应用程序中,我有一个函数可以使NSRURLSession并使用发送一个NSURLRequest 在此任务的完成块中,我需要进行一些计算,以将UIImage添加到调用的viewcontroller中。我有一个叫做 进行添加UIImage的计算。如果我尝试在完成块中运行添加视图的代码,则Xcode会引发错误,提示我在后台进程中无法使用布局引擎。所以我在SO上找到了一些代码,试图在主线

  • 我有这个: 现在,我想嘲弄一下。

  • 我正在尝试为创建网球锦标赛的应用程序填充队列 当我单击按钮“Crear Torneo”(如图所示)时,我正在方法“crearTorneo”中创建队列。当我点击“Añadir”按钮(也可以在图像中看到)时,它会获取几个TextFields中的信息并在“llenarCola”方法中创建一个对象,返回该对象的目的是填充队列。 现在,这是我的llenarCola方法: 这是我的crearTorneo方法:

  • 问题内容: 我正在使用gwt uibinder。我想为字段动态设置值。我正在尝试这样的事情 并且该字段设置有这样的值 而且ValueStore有2种方法 问题是我无法调用getValue(key)。我只能调用no-args方法,这意味着以下操作是不可能的 请说明是否有一种方法可以实现,其中我可以调用传递了参数的方法。 问题答案: 不支持该方法,只能调用没有参数的方法。您将不得不直接将其公开为no

  • 问题内容: 我正在尝试使用java反射调用带有可变参数的方法。这是托管方法的类: 这是调用代码: 我在调用invoke的最后一行以“错误数量的参数” 的形式获取IllegalArgumentException 。不知道我在做什么 错。 任何指针将不胜感激。 谢谢 问题答案: public class Test { 为我工作。 将您的N []投射到对象 在实例上调用,而不在类上调用

  • 我hase测试类: 我想明白,怎么能叫: 将返回def的值。 有可能吗?