TableView为了呈现其单元格而执行的内部过程是什么

时间:2014-03-14 02:47:49

标签: ios uitableview

TableView呈现其单元格的内部过程是什么,意味着表视图是否有任意数量的单元格大约500,那么这些单元格将如何在用户之前呈现

2 个答案:

答案 0 :(得分:1)

单独渲染单元格,并且仅在需要可见时才渲染单元格。 tableview包含足够的单元格以始终显示可显示的内容。没有其他单元格被渲染。当一个人从顶部滚动时,它会被回收并重新用于那个即将从底部滚动的那个。

500行的表在任何给定时间都不得超过10-12个单元格,具体取决于tableview的大小和单元格的大小。

答案 1 :(得分:0)

只有当它在tableView中可见时才会呈现单元格,并且将消失的单元格放入一个容器中,该容器可以重复用于具有相同CellIdentifier的下一个出现的单元格。所以只有visible才会在tableView中呈现。按单元格计算内存的成本取决于tableview中可见的单元格数量以及CellIdentifier中用于创建新单元格的cellForRowAtIndexPath个。{/ p>

以下步骤是细胞的生命周期:

  1. 致电- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
  2. 致电dequeueReusableCellWithIdentifier中的cellForRowAtIndexPathCellIdentifier检查可重复使用的单元格。
     如果返回nil,则应创建一个CellIdentifier的单元格  如果不是nil,则可以重用没有alloc的单元格。单元格将调用prepareForReuse,您可以覆盖自定义单元格中的方法以重置UI。
  3. 获取单元格对象后,将调用- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cell forRowAtIndexPath:(NSIndexPath *)indexPath,您可以在显示之前自定义单元格对象。
  4. 滚动tableview时,单元格从tableView中消失。单元格将被放入缓存容器中,并准备好重新用于下一次出现,即delegate调用dequeueReusableCellWithIdentifier CellIdentifier {。}}的时间。