UIRefreshControl 不起作用
UIRefreshControl does not work
我的项目仍在使用 Swift 2.3,尚未迁移到 Swift 3。当我使用以下代码下拉 table 视图时,我可以验证在调试区域中可以看到刷新的数据,但它不会反映在 table 视图中。我在 IOS 9 和 IOS 10 上都试过了。
var refreshControl = UIRefreshControl()
if #available(iOS 10.0, *) {
TableView.refreshControl = refreshControl
} else {
TableView.addSubview(refreshControl)
}
refreshControl.addTarget(self, action: #selector(self.handleRefresh), forControlEvents: UIControlEvents.ValueChanged)
func handleRefresh(refreshControl: UIRefreshControl) {
refreshControl.beginRefreshing()
Search()
TableView.reloadData()
refreshControl.endRefreshing()
}
尝试在主线程上重新加载 tableView。
DispatchQueue.main.async {
self.tableView.reloadData()
}
将tableView.reloadData()
移动到可以确定search()
函数已经完成并返回结果的地方。如果这是一个异步函数,那么添加一个完成处理程序,以便您知道何时调用 reloadData()
。然后你可以像这样调用函数:
search {
dispatch_async(dispatch_get_main_queue()) {
tableView.reloadData()
}
}
或者,当您在 Swift 3
DispatchQueue.main.async {...}
我的项目仍在使用 Swift 2.3,尚未迁移到 Swift 3。当我使用以下代码下拉 table 视图时,我可以验证在调试区域中可以看到刷新的数据,但它不会反映在 table 视图中。我在 IOS 9 和 IOS 10 上都试过了。
var refreshControl = UIRefreshControl()
if #available(iOS 10.0, *) {
TableView.refreshControl = refreshControl
} else {
TableView.addSubview(refreshControl)
}
refreshControl.addTarget(self, action: #selector(self.handleRefresh), forControlEvents: UIControlEvents.ValueChanged)
func handleRefresh(refreshControl: UIRefreshControl) {
refreshControl.beginRefreshing()
Search()
TableView.reloadData()
refreshControl.endRefreshing()
}
尝试在主线程上重新加载 tableView。
DispatchQueue.main.async {
self.tableView.reloadData()
}
将tableView.reloadData()
移动到可以确定search()
函数已经完成并返回结果的地方。如果这是一个异步函数,那么添加一个完成处理程序,以便您知道何时调用 reloadData()
。然后你可以像这样调用函数:
search {
dispatch_async(dispatch_get_main_queue()) {
tableView.reloadData()
}
}
或者,当您在 Swift 3
DispatchQueue.main.async {...}