我有一个表格 View ,其中包含可以删除的单元格。当一个单元格被删除时,我想显示一个删除动画,例如 UITableViewRowAnimationFade
。问题是我的表格 View 的单元格具有交替的背景颜色,因此我需要在动画完成后 -reloadData
来修复已删除单元格下方的所有单元格的颜色。
因此,如果您还没有读到这里,我需要一种在表格 View 动画完成后运行一些代码的方法。我目前正在使用 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 秒的时间完成。
最佳答案
您也可以使用具有相同延迟的 NSTimer(尽管不需要,-performSelector:withObject:afterDelay: 工作正常)。
另一种选择是在 deletingCell
(path
) 之后遍历单元格并重新绘制它们,或者将索引路径添加到数组并调用 reloadRowsAtIndexPaths: withRowAnimation:
如下图。然后你也可以使用 UITableViewRowAnimationFade
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
关于objective-c - 动画行删除后重新加载表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6970102/