【问题标题】:Is -[UITableView reloadData] asynchronous or synchronous?-[UITableView reloadData] 是异步的还是同步的?
【发布时间】:2012-03-12 22:24:24
【问题描述】:

当您在表视图实例上调用 -reloadData 时,是否会使所有 UITableViewDataSource 调用异步? 谢谢。

【问题讨论】:

标签: ios cocoa-touch uitableview


【解决方案1】:

这个方法实际上只是从表中删除所有UITableViewCell 视图。重绘表格时会调用数据源委托方法。

所以,它是异步的。

编辑:

实际上,有些调用是同步的。部分和行数和行高会立即更新,因此,例如 contentSize 在调用后正确设置。另一方面,在重新绘制表之前不会调用tableView:cellForRowAtIndex:

【讨论】:

  • 所以如果我有一个支持 tableview 的数组。如果在调用之前更新数组,cellForRowAtIndexPath 会崩溃,我们应该如何解决这个问题?
  • @bogardon 我不明白 - 为什么会崩溃?
  • 如果在所有 cellForRow... 调用之前再次调用 reloadData 并且新的单元格数 cellForRow 要求的索引太高
  • 至少在 iOS 8.2+ 上的集合视图的情况下,numberOfItemsInSection 也是异步调用的,由布局代码(流布局等)驱动。
  • @bendytree 所以我必须防止这种情况发生吗?
猜你喜欢
  • 2020-05-15
  • 2020-02-21
  • 2013-02-25
  • 2012-12-30
  • 2014-04-25
  • 1970-01-01
  • 1970-01-01
  • 2019-01-17
  • 2017-06-22
相关资源
最近更新 更多