我正在编写应用程序并设置queryAndAppend函数来查询数据库并将拉出的信息附加到一组数组(然后用于在表视图中迭代单元格)。查询函数在viewDidLoad()
中调用时可以正常工作。我想要一个pull to refresh函数来额外调用函数(从而更新表格单元格),但它无法正常工作。以下是相关代码:
var refreshControl = UIRefreshControl()
override func viewDidLoad() {
super.viewDidLoad()
myQueryandAppend(completion: {
self.tableView.reloadData()
})
upComingQueryandAppend(completion: {
self.tableView.reloadData()
})
refreshControl = UIRefreshControl()
refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl.addTarget(self, action: #selector(MainPageVC.refresh(_:)), for: UIControlEvents.valueChanged)
}
func refresh(_ sender: AnyObject){
myQueryandAppend(completion: {
self.tableView.reloadData()
self.refreshControl.endRefreshing()
})
upComingQueryandAppend(completion:{
self.tableView.reloadData()
self.refreshControl.endRefreshing()
})
}
不完全确定为什么它不能正常工作,因为我在不同的视图控制器(具有不同的查询/追加功能)中进行了非常类似的设置,可以通过拉动刷新来正常工作。
答案 0 :(得分:2)
如果课程为UIViewController
但不是UITableViewController
,则需要手动将refreshControl
作为子视图添加到tableView
:
tableView.addSubview(refreshControl)
所以,viewDidLoad()
应如下所示:
override func viewDidLoad() {
super.viewDidLoad()
myQueryandAppend(completion: {
self.tableView.reloadData()
})
upComingQueryandAppend(completion: {
self.tableView.reloadData()
})
refreshControl = UIRefreshControl()
refreshControl.attributedTitle = NSAttributedString(string: "Pull to refresh")
refreshControl.addTarget(self, action: #selector(MainPageVC.refresh(_:)), for: UIControlEvents.valueChanged)
// here is the extra job!
tableView.addSubview(refreshControl)
}
答案 1 :(得分:2)
在iOS 10+中,您可以直接将刷新控件分配给tableview / scrollview的.RefreshControl属性
tableView.RefreshControl = refreshControl