下拉刷新不执行刷新功能?
Pull to refresh not performing refreshing function?
我正在编写一个应用程序,并设置了查询数据库的查询和追加函数,并将提取的信息附加到一组数组(然后用于遍历 table 视图中的单元格)。查询函数正常工作,因为它们在 viewDidLoad()
中被调用。我想要一个拉动刷新功能来额外调用函数(从而更新 table 单元格),但它无法正常工作。这是相关代码:
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()
})
}
不完全确定为什么它不起作用,因为我在不同的视图控制器(具有不同的 query/append 功能)中有一个非常相似的设置,可以正常使用下拉刷新。
如果 class 是 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)
}
在 iOS 10+ 中,您可以直接将刷新控件分配给表视图/滚动视图的 .RefreshControl 属性
tableView.RefreshControl = refreshControl
我正在编写一个应用程序,并设置了查询数据库的查询和追加函数,并将提取的信息附加到一组数组(然后用于遍历 table 视图中的单元格)。查询函数正常工作,因为它们在 viewDidLoad()
中被调用。我想要一个拉动刷新功能来额外调用函数(从而更新 table 单元格),但它无法正常工作。这是相关代码:
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()
})
}
不完全确定为什么它不起作用,因为我在不同的视图控制器(具有不同的 query/append 功能)中有一个非常相似的设置,可以正常使用下拉刷新。
如果 class 是 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)
}
在 iOS 10+ 中,您可以直接将刷新控件分配给表视图/滚动视图的 .RefreshControl 属性
tableView.RefreshControl = refreshControl