【问题标题】:reloadTable after animated row deletion动画行删除后的 reloadTable
【发布时间】:2011-08-07 01:20:01
【问题描述】:

我有一个表格视图,其中包含可以删除的单元格。当一个单元格被删除时,我想显示一个删除动画,例如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 秒的时间来完成。

【问题讨论】:

    标签: objective-c ios xcode uitableview


    【解决方案1】:

    您也可以使用具有相同延迟的 NSTimer(尽管不需要,-performSelector:withObject:afterDelay: 工作正常)。

    另一种选择是循环遍历deletingCell (path) 之后的单元格并重新绘制它们,或者将索引路径添加到数组并调用reloadRowsAtIndexPaths:withRowAnimation:,如下所示。然后你也可以使用UITableViewRowAnimationFade

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

    【讨论】:

    • 谢谢!我想一定有一个好方法可以做到这一点,而且确实有。
    猜你喜欢
    • 2016-12-14
    • 1970-01-01
    • 1970-01-01
    • 2017-04-26
    • 2020-05-11
    • 2013-11-06
    • 2023-03-30
    • 2012-01-06
    • 1970-01-01
    相关资源
    最近更新 更多