UITableView reloadData()不刷新显示的单元格

时间:2014-09-21 10:32:09

标签: ios uitableview swift uinavigationcontroller

我有

class StationViewController : 
    UITableViewController, UITableViewDelegate, UITableViewDataSource {
  @IBOutlet var stationTableView: UITableView!

更新数据源中的数据并执行

stationTableView.reloadData()

这在屏幕上无法立即显示。如果我滚动,倾斜或做任何其他强制重新绘制屏幕的内容,则可以看到更新的单元格。我可以确认一下 UITableView确实通过调用

来进行更新
println("\(stationTableView.visibleCells())")

打印预期的单元格。

设置的其余部分是UINavigationController,其中StationViewController为关系。 stationViewController的IBOutlet已连接到情节提要文件中的UITableView

我似乎需要一个"重拍"屏幕,使我的更新立即可见。我该怎么做?

1 个答案:

答案 0 :(得分:33)

感谢Artem,我发现我需要在主线程上调用reloadData()。这就是我解决这个问题的方法:

func refreshUI() {
    dispatch_async(dispatch_get_main_queue(),{
        self.stationTableView.reloadData()
    });
}