iPhone UITableView-同时设置所有单元格内容的动画

iPhone UITableView-同时设置所有单元格内容的动画,iphone,objective-c,animation,cell,uitableview,Iphone,Objective C,Animation,Cell,Uitableview,我在同时设置单元格内容的动画时遇到问题。一旦单元格不再可见(用户滚动表格),动画将冻结。当该单元再次可见时,动画将继续 所有单元格都在单独的方法中预计算,并存储在NSMutableArray中,因此cellforrowatinexpath方法如下所示: - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { return [_preco

我在同时设置
单元格
内容的动画时遇到问题。一旦单元格不再可见(用户滚动表格),动画将冻结。当该单元再次可见时,动画将继续

所有单元格都在单独的方法中预计算,并存储在
NSMutableArray
中,因此
cellforrowatinexpath
方法如下所示:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    return [_precomputedCells objectAtIndex:indexPath.row];
}
填充预计算单元数组的方法也会激发每个单元中的所有动画


你知道我如何确保无论单元格是否可见,所有动画都在播放吗?

问题在于
UITableView
从视图层次结构中删除了不可见的单元格。这就是动画停止的原因

一个显而易见的解决方案是使用
UIScrollView
而不是
UITableView
。这需要稍微多做些工作,但不太复杂


另一种解决方案是删除当前单元格动画,并在单元格出现时重新启动它们,使用一些
UITableView
委托方法,例如
tableView:willDisplayCell:forrowatinexpath:

如果从表视图免费获得延迟加载,为什么要预计算单元格?您可以在单元格内验证动画是否处于正确状态,而不是在管理该数组的任何视图控制器内。我正在对它们进行预计算,以确保所有动画都将同时启动。我不认为当我在cellForRowAtIndexPath方法中创建它们时,它们都会激发,因为其中一些是不可见的。为什么不直接调用
makeObjectsPerformSelector:
visibleCells
的数组上,TableView交给你同步动画呢?这样,您就不必担心可见性,也不会因为视图控制器包含太多视图而违反封装。谢谢,
makeObjectsPerformSelector:
works!