#Selector作为参数?

时间:2018-07-10 15:55:46

标签: ios swift uitableview

我想创建一个将refreshControll添加到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!)

    }  
}

我想指定使用该函数时要调用的函数。

这有可能吗?

1 个答案:

答案 0 :(得分:3)

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

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

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