我想一个一个地删除带有动画的表格视图中的一些单元格,起初我使用这样的代码:
[self beginUpdates];
[self deleteRowsAtIndexPaths:removeIndexPaths withRowAnimation:UITableViewRowAnimationFade];
[self endUpdates];
removeIndexPaths 数组中有六个 indexPath。它以正确的方式工作,但动画效果是1。六个单元格为空,2。淡化空白区域。
然后我尝试使用 for/while 删除它们,如下所示:
int removeIndexRow = indexPath.row + 1;
while (item.level < nextItemInDisplay.level)
{
NSIndexPath *removeIndexPath = [NSIndexPath indexPathForRow:removeIndexRow inSection:0];
[items removeObject:nextItemInDisplay];
[self beginUpdates];
[self deleteRowsAtIndexPaths:@[removeIndexPath] withRowAnimation:UITableViewRowAnimationFade];
NSLog(@"1");
sleep(1);
NSLog(@"2");
[self endUpdates];
}
为了了解函数的工作原理,我使用 sleep 和 NSLog 来输出一些标志。然后我发现结果是输出了所有的flags后,六个单元格被关闭在一起了,最不可思议的是他们的动画是这样的:1.最后五个单元格消失,没有动画,2.第一个单元格是空的, 3.淡化第一个单元格空白区域。
但我想要的是一个一个地删除单元格,首先第一个单元格为空并淡化它,然后是第二个,第三个......我该如何解决?