【问题标题】:How to I create a function through a UIButton in the #selector action?如何在#selector 操作中通过 UIButton 创建函数?
【发布时间】:2017-05-14 22:51:07
【问题描述】:

我有一个 UIButton,它在按钮按下时运行此方法

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

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

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

【问题讨论】:

    标签: swift uiview uibutton


    【解决方案1】:

    您可能想阅读this answer

    上面写着:

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

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

    【讨论】:

      【解决方案2】:

      很遗憾,您不能这样做。选择器只是函数的名称,swift 中的闭包是“无名”或“匿名”函数。

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-03-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多