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

Eri*_*son 13 uitableview uinavigationcontroller ios swift

我有

class StationViewController : 
    UITableViewController, UITableViewDelegate, UITableViewDataSource {
  @IBOutlet var stationTableView: UITableView!
Run Code Online (Sandbox Code Playgroud)

更新数据源中的数据并执行操作时

stationTableView.reloadData()
Run Code Online (Sandbox Code Playgroud)

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

println("\(stationTableView.visibleCells())")
Run Code Online (Sandbox Code Playgroud)

打印预期的细胞.

其余的设置是UINavigationControllerStationViewController的关系.它的IBOutlet stationViewController连接到UITableViewstoryboard文件中.

我似乎需要对屏幕进行"重新绘制"以使我的更新立即可见.我怎么做?

Eri*_*son 33

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

func refreshUI() {
    dispatch_async(dispatch_get_main_queue(),{
        self.stationTableView.reloadData()
    });
}
Run Code Online (Sandbox Code Playgroud)

  • 谢谢,这有帮助!这是Swift 3的函数`func refreshUI(){DispatchQueue.main.async {self.tableView.reloadData()}}` (2认同)