UITableView的reloadData()不刷新显示细胞
问题描述:
我UITableView的reloadData()不刷新显示细胞
class StationViewController :
UITableViewController, UITableViewDelegate, UITableViewDataSource {
@IBOutlet var stationTableView: UITableView!
当更新我的数据源中的数据,并做
stationTableView.reloadData()
这不是在屏幕上立即可见。如果我滚动,倾斜或做其他任何强制重画屏幕的内容,更新的单元格都可见。我可以证实, 的UITableView确实做了更新,通过调用
println("\(stationTableView.visibleCells())")
打印出预期的细胞。
其余的设置是UINavigationController
它有我的StationViewController
作为关系。 stationViewController
的IBOutlet连接到故事板文件中的UITableView
。
我似乎需要对屏幕进行“重新绘制”以使我的更新立即可见。我怎么做?
答
感谢Artem,我发现我需要在主线程上调用reloadData()。这是我如何解决这个问题:
func refreshUI() {
dispatch_async(dispatch_get_main_queue(),{
self.stationTableView.reloadData()
});
}
很可能你不是从主线程调用'stationTableView.reloadData()'。 – Artem 2014-09-21 11:09:42