我在Swift 3中对用Objective-C编写的UIButton个子类进行了分类.

当我try 添加目标时,它失败,并显示错误代码:

class ActionButton: JTImageButton {

    func action() {

    }

    func configure()) {
        // ...
        self.addTarget(self, action: #selector(self.action()), for: .touchUpInside)
        // error: 
        // Argument of '#selector' does not refer to an '@objc' method, property, or initializer

    }
}

推荐答案

你需要做的就是把func标记为@objc,不需要self引用或括号

class ActionButton: JTImageButton {

    @objc func btnAction() {

    }

    func configure() {
        // ...
        self.addTarget(self, action: #selector(btnAction), for: .touchUpInside)
        // error: 
        // Argument of '#selector' does not refer to an '@objc' method, property, or initializer

    }
}

如果你愿意,你甚至可以达到private

Swift相关问答推荐

为表单部分赋予背景 colored颜色 /渐变

启用完成并发判断以及如何解决警告(续)

如何禁用MacOS上SwiftUI中按钮周围的聚焦环(或高亮显示)?

对多个项目的数组进行排序

在运行时检测蒸汽工人的类型

动画过程中的SwiftUI重绘视图

如何使用Swift宏向 struct 体及其init函数添加新成员?

如何偏移HStack中的视图,但仍然约束框架以与偏移匹配?

为什么无法在 Swift 中使用AVFoundation扫描 QRCode

为什么 XUIView 中的 Binding 看不到更新后的值?

将弱引用作为类函数引用传递时,弱引用无法按预期工作

使第二个视图变灰 SwiftUI

如何返回一个通过 SwiftUI 中的另一个协议间接继承 View 协议的 struct ?

如何在 AppDelegate for Cocoa macOS 中创建 mainMenu 和菜单项?

Swift-SceneKit-无法从art.scnassets加载.scn文件

如何在 SwiftUI 中用图像替换占位符文本?

如何使用 Swinject 注册符合 ObservableObject 的协议?

如何在 SwiftUI 中正确实现Collection 夹?

在 Swift 中获取双精度的小数部分

无法停止 AVPlayer