objective-c - 动画行删除后重新加载表

标签 objective-c ios xcode uitableview

我有一个表格 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/

相关文章:

ios - 在 iOS 11 上使用大标题导航栏时更改状态栏背景颜色

ios - NSDictionary 的不区分大小写的键

objective-c - 将 UISegmentedControlNoSegment 指定为 UISegmentedControl 的 selectedSegmentIndex 对 iOS 13 没有影响

iphone - 如何在两个以上的 UIView 之间做翻转动画?

ios - 如何在 Objc 项目中使用 SnapKit?

ios - #警告: C-style for statement is deprecated and will be removed in a future version of Swift

ios - 从枚举类型 'enum CGImageAlphaInfo' 隐式转换为不同的枚举类型 'CGBitmapinfo' (aka) 'enum CGBitmapInfo' ) ios 7

xcode - Xcode中的蓝色文件夹是什么

iphone - 5.0 Base SDK 应用无法安装在 5.1 操作系统的 iPad 上

ios - 如何在深色模式下单击按钮时使状态栏文本颜色变暗?