Swift UITableView reloadData()UI行为

时间:2016-03-26 18:39:04

标签: swift uitableview

我们正在通过REST调用加载数据:

let task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in
    //Update data store….
    self.tableView.reloadData()
})
task.resume()

然而,未显示网格中的数据。您必须在模拟器中单击网格 - 当您执行此操作时,将显示数据。我们在这里缺少什么来让数据在没有任何UI交互的情况下自动加载?

2 个答案:

答案 0 :(得分:4)

reloadData()方法必须在主线程中运行。 dataTaskWithRequest(_ request: NSURLRequest)在后​​台线程中运行:

let task = NSURLSession.sharedSession().dataTaskWithRequest(request, completionHandler: {data, response, error -> Void in

    dispatch_async(dispatch_get_main_queue(),{
        //Update data store….
        self.tableView.reloadData()
    })

})

task.resume()

答案 1 :(得分:2)

在后台线程上调用完成处理程序。您必须在主线程/队列上调用reloadData