我有一个表格视图,其中包含可以删除的单元格。删除单元格时,我想显示删除动画,例如UITableViewRowAnimationFade
。问题是我的表格视图的单元格具有交替的背景颜色,因此在动画完成后我需要-reloadData
来修复已删除单元格下方所有单元格的颜色。
所以,如果你还没读过这篇文章,我需要一种在表视图动画完成后运行一些代码的方法。我目前正在使用performSelector:withObject:afterDelay:
并硬编码动画延迟的近似值。这种方法有效,但必须有更好的方法:
NSIndexPath * path = [listTable indexPathForCell:deletingCell];
NSArray * indexPaths = [NSArray arrayWithObject:path];
[listTable deleteRowsAtIndexPaths:indexPaths withRowAnimation:UITableViewRowAnimationFade];
[listTable performSelector:@selector(reloadData) withObject:nil afterDelay:0.35];
在这种情况下,我假设UITableViewRowAnimationFade
完成时间不到0.35秒。
答案 0 :(得分:2)
您也可以使用相同延迟的NSTimer(尽管不需要,-performSelector:withObject:afterDelay:工作正常)。
另一种选择是在deletingCell
(path
)之后遍历单元格并重绘它们,或者将索引路径添加到数组并调用reloadRowsAtIndexPaths:withRowAnimation:
,如下所示。然后你也可以使用UITableViewRowAnimationFade
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation