UIRefreshControl不起作用

时间:2017-03-02 20:12:44

标签: ios swift pull-to-refresh uirefreshcontrol

我的项目仍在使用Swift 2.3,尚未迁移到Swift 3。当我使用以下代码下拉表格视图时,我可以验证在调试区域中可以看到刷新的数据,但它没有反映在表格视图上。我在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()
 }

2 个答案:

答案 0 :(得分:2)

tableView.reloadData()移动到您可以确定search()功能已完成并返回结果的位置。如果这是异步函数,则添加完成处理程序,以便您知道何时调用reloadData()。然后你可以像这样调用函数:

search {
    dispatch_async(dispatch_get_main_queue()) {
        tableView.reloadData()
    }
}

或者,当你在Swift 3上时

DispatchQueue.main.async {...}

答案 1 :(得分:1)

尝试在主线程上重新加载tableView。

DispatchQueue.main.async {
self.tableView.reloadData()
}