reloadData究竟调用了什么?

时间:2010-06-04 19:59:05

标签: iphone objective-c cocoa-touch uitableview

在UITableView上调用reloadData时,实际调用了哪些方法?

[tableView reloadData];

3 个答案:

答案 0 :(得分:18)

重新加载整个表视图,它调用cellForRowAtIndexPath来获取所有行和节的单元格...这样做它还调用tableView数据源的numberOfSections方法和tableview数据源的numberOfRows方法等等。

答案 1 :(得分:1)

此外,为了将来参考,文档here中随时可以获得该信息。从Apple的文档中复制/粘贴:

调用此方法重新加载用于构造表的所有数据,包括单元格,节页眉和页脚,索引数组等。为了提高效率,表视图仅重新显示可见的行。如果表因重新加载而缩小,它会调整偏移量。表视图的委托或数据源在希望表视图完全重新加载其数据时调用此方法。不应在插入或删除行的方法中调用它,尤其是在通过调用beginUpdates和endUpdates实现的动画块中

答案 2 :(得分:1)

对于接受答案非常好。但我想提一下所有可见的细胞都将被重建。通常这不是什么大不了的事。但是如果你的tableViewCell存储属性包含一些数据可能会丢失。

例如,单击tableViewCell上的按钮以从Internet请求某些数据并将检索到的数据保存到存储的属性中。如果您reloadData,则检索到的数据将丢失。当然,这实际上并不适合从tableViewCell发出请求。但只是想解释一下这种情况。