如何在#selector动作中通过UIButton创建一个函数?

时间:2017-05-14 22:51:07

标签: swift uiview uibutton

我有一个UIButton,这个方法按下按钮

    right.addTarget(sceneto, action: #selector(pageUp), for: .touchDown)

但是,我想知道是否可以在这个选择器方法中添加一个函数,而不是像这样引用一个函数本身

    right.addTarget(sceneto, action: #selector({print("hello world")}), for: .touchDown)

2 个答案:

答案 0 :(得分:1)

您可能需要阅读this answer

它说:

  

选择器是Objective-C的一项功能,只能与暴露于动态Obj-C运行时的方法一起使用。你不能拥有一个纯粹的Swift方法的选择器。

调用Obj-C运行时的方法(这就是选择器引用的所有函数需要@objc标记的原因)并且无法将闭包作为选择器传递。

答案 1 :(得分:0)

很遗憾,你无法做到这一点。选择器只是一个函数的名称,而swift中的一个闭包是一个无名的"或者"匿名"功能。

我为一个类似的问题创建了一个答案here,详细介绍了其中一个可能的情况/解决方法。