UITableView:cellForRowAtIndexPath继续被调用

时间:2011-03-03 21:46:43

标签: objective-c xcode uitableview ios4

我有一个UITableView控制器和一个UITableView。我已经使用委托等设置了所有内容,并且它填充得很好。我注意到一个小错误,但使用以下方法:

:的cellForRowAtIndexPath

我注意到每次滚动表时都会不断调用此方法。即使在填充表后,它仍继续调用。基本上,一个单元格移出视图,当它返回视图时,它再次调用它。我让NSLog打印出该方法中的单元格内容,这就是我知道它继续调用的方式。

该功能是不是每个单元调用一次,填充它,然后完成?

2 个答案:

答案 0 :(得分:8)

不。每次需要一个单元格时都会调用它,每次渲染一个单元格时都需要一个单元格。

UITableView是一个非常聪明的小动物。它实际上只保留它显示的单元格,加上一两个或更多的缓存。当滚动一个没有打开的单元格时,可以从缓存中询问一个单元格,如果有单元格,它将被重用。

这样可以在UITableView中显示巨大的数据集,因为内存中确实没有大量的单元格,只有屏幕上的单元格和小缓存。

答案 1 :(得分:0)

这是正确的行为。它与UITableViewCells的出列有关。这就是细胞重用很重要的原因。这种方式理想情况下,内存中有限的少量内存可以不断重复使用。

查看the docs了解更多信息和代码示例。