ios - #Selector 作为参数?
问题描述
我想创建一个将 a 添加refreshControll
到 a的函数UITableView
。
我遇到的问题是#selector
:
extension UITableView{
func refreshTableView(callFunction: #selector()){
refreshControl = UIRefreshControl()
refreshControl?.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl?.addTarget(self, action: #selector(callFunction), for: .valueChanged)
self.addSubview(refreshControl!)
}
}
我想指定当我使用这个函数时要调用哪个函数。
这甚至可能吗?
解决方案
#selector(...)
是 type 的表达式Selector
,因此您的方法应该接受一个Selector
对象并将其直接传递给action:
参数。
extension UITableView {
func refreshTableView(callFunction: Selector) {
// ...
refreshControl?.addTarget(self, action: callFunction, for: .valueChanged)
// ...
}
}
myTableView.refreshTableView(callFunction: #selector(whatever))
推荐阅读
- javascript - 有没有办法在 Javascript 中结合 map 和 shift ?
- javascript - 这个css声明的结果?
- c# - 当属性具有 IDictionary 时反序列化对象
- python - 划分列、矩阵的迭代
- javascript - 如何在不影响 SEO 的情况下使用 wow.js 和 animate.css?
- java - java.lang.UnsatisfiedLinkError:dlopen 失败:找不到库“libpthread.so.0”
- r - 如何将值列表读入沙箱中的数据表?
- node.js - npm root:没有这样的文件或目录
- visual-studio-extensions - 带有自定义命令和子命令的 Visual Studio 扩展
- javascript - 如何使用 squirrel.windows 创建注册表项