知道何时完成UITableView加载其单元格

时间:2012-04-27 08:58:01

标签: ios uitableview

此问题的目的不是知道UITableView何时完成加载其数据(已经回答in this post),而是知道UITableView何时完成了所有数据的绘制细胞

使用

中的visibleCells属性
- (UITableViewCell *)tableView:(UITableView *)iTableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

方法不起作用,因为第一次加载tableview时,还没有可见的单元格。

想法是在刷新tableview时为单元格外观设置动画。

这似乎是一项复杂的任务,但我很惊讶Apple在装载tableview时没有提供任何委托方法。

2 个答案:

答案 0 :(得分:0)

最好尝试这个方法,使用给定的动画集传递要重新加载的indexPaths NSArray

- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation  

希望它有效

答案 1 :(得分:0)

我不相信有一种方法可以指示表何时加载了它的单元格。但是,无论何时绘制,您都可以实现在表格单元格中制作动画的目标。

<强>逻辑:

  1. UITableView根据需要显示UITableViewCell。
  2. 每个UITableViewCell都是UIView的子类。
  3. UIView有drawRect,每次绘制视图时都会调用它。
  4. 所以,将你的动画放在UITableViewCell的drawRect方法&amp;无论何时绘制它都会动画。
  5. <强>实施

    1. 创建UITableViewCell的子类
    2. 将此子类应用于表格单元格
    3. 添加drawRect方法和
    4. 在drawRect方法中实现动画。
    5. 我在我的一个项目中完成了这项工作并且效果很好。它在加载或滚动表格以及旋转显示时绘制动画。使用这种方法,您无需知道表何时完成加载 - 每个单元格在绘制时都只是动画。

      最后一点注意事项 - 如果您将另一个视图控制器放在表视图的顶部然后将其关闭,则可能需要重新加载表并将每个UITableViewCell设置为setNeedsDisplay。这将强制为每个UITableViewCell再次调用drawRect。