swift - 将 @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 试图查看其他问题以寻求帮助,但它们根本没有帮助。我已经尝试了一切。
解决方案
使用参数类型作为选择器,您的问题就解决了。试试下面的代码
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")
}
推荐阅读
- r - 传单多边形填充颜色参数总是产生错误
- python-3.x - 最小化复合函数
- python-3.x - __aenter__ 和 __aexit__ 的返回类型是什么?
- php - 使用“list_terms_exclusions”排除 Wordpress 中的类别未显示结果
- python - 如何以毫秒精度获得系统启动时间?
- delphi - 如何在 Delphi 5 中创建具有显式值的枚举
- java - 18080端口的Tomcat可以看到web可以成功主机,但是没有任何端口不显示
- javascript - shopware 6:如何在 offCanvas 菜单元素中添加自定义菜单?
- sql - 从特定点开始每个 SQL 记录
- makefile - Makefile 处理多行输出