首页 > 解决方案 > #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!)

    }  
}

我想指定当我使用这个函数时要调用哪个函数。

这甚至可能吗?

标签: iosswiftuitableview

解决方案


#selector(...)是 type 的表达式Selector,因此您的方法应该接受一个Selector对象并将其直接传递给action:参数。

extension UITableView {
    func refreshTableView(callFunction: Selector) {
        // ...
        refreshControl?.addTarget(self, action: callFunction, for: .valueChanged)
        // ...
    }
}

myTableView.refreshTableView(callFunction: #selector(whatever))

推荐阅读