【问题标题】:UITableView reloadData() does not refresh displayed cellsUITableView reloadData() 不刷新显示的单元格
【发布时间】:2014-11-15 11:40:46
【问题描述】:

我有

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

当更新我的数据源中的数据并做

stationTableView.reloadData()

这不会立即在屏幕上显示。如果我滚动、倾斜或执行任何其他强制重绘屏幕的操作,则更新的单元格可见。我可以确认 UITableView 确实通过调用进行了更新

println("\(stationTableView.visibleCells())")

打印预期的单元格。

设置的其余部分是UINavigationController,它与我的StationViewController 建立了关系。 stationViewController 的 IBOutlet 连接到情节提要文件中的 UITableView

我似乎需要“重绘”屏幕以使我的更新立即可见。我该怎么做?

【问题讨论】:

  • 很可能你不是从主线程调用stationTableView.reloadData()

标签: ios uitableview swift uinavigationcontroller


【解决方案1】:

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

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

【讨论】:

  • 我试过这个并且得到“预期的表达式”构建错误。 dispatch_async() 是什么?
  • 谢谢,有帮助!这是 Swift 3 func refreshUI() { DispatchQueue.main.async { self.tableView.reloadData() } } 的代码
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多