首页 > 解决方案 > 将 @objc 函数作为参数传递给 init 以用作 UIControl 目标的操作

问题描述

所以我试图以 objc 函数作为参数但是我得到一个错误Use of unresolved identifier 'handler'

typealias Handler = (_ sender: UIControl) -> Void

    class Custom {
       var item = UIControl()

       init(hander: Handler) {
          item.addTarget(item.self, action: #selector(handler(_ :)), for: .touchUpInside)
       }
    }

    var temp = Custom(hander: myFunc)

    @objc func myFunc(_ sender: UIControl) {
        print("hi")
    }

预期值是,如果按下 temp,那么我应该在控制台中看到 hi。非常感谢你的帮助!

PSI 试图查看其他问题以寻求帮助,但它们根本没有帮助。我已经尝试了一切。

标签: swift

解决方案


使用参数类型作为选择器,您的问题就解决了。试试下面的代码

class Custom {
       var item = UIControl()

       init(handler: Selector) {
        item.addTarget(item.self, action: handler, for: .touchUpInside)
       }
    }

    var temp = Custom(handler: #selector(myFunc(_:)))

    @objc func myFunc(_ sender: UIControl) {
        print("hi")
    }

推荐阅读