添加或删除单元格后,只重新加载我添加或删除的单元格。在添加或删除新单元格后,我需要重新加载所有单元格。
我知道[self.tableView reloadData],但是如果我在添加或删除单元格后立即调用它,它会切断单元格添加/删除动画。
我实际上已经找到了解决这个问题的方法,但它有些不太常见,我认为可能有更好的方法。这就是我现在所做的:
[self.tableView deleteRowsAtIndexPaths:row_to_delete withRowAnimation:UITableViewRowAnimationRight];
double delayInSeconds = .25;
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, delayInSeconds * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self.tableView reloadData];
});
答案 0 :(得分:2)
尝试延迟重新加载表。
删除后,
[self performSelector:@selector(reloadTableview) withObject:nil afterDelay:0.35];
-(void) reloadTableview {
[self.YourTableView reloadData];
}
答案 1 :(得分:1)
如果要同时对后续插入,删除和选择操作(例如,cellForRowAtIndexPath:和indexPathsForVisibleRows)进行动画处理,请调用beginUpdates。这组方法必须以调用endUpdates结束。这些方法对可以嵌套。如果未在此块内进行插入,删除和选择调用,则行计数等表属性可能会变为无效。你不应该在组内调用reloadData;如果你在组内调用此方法,则需要自己执行任何动画。
[self.tableView beginUpdates];
[self.tableView deleteRowsAtIndexPaths:row_to_delete withRowAnimation:UITableViewRowAnimationRight];
[self.tableView endUpdates];
答案 2 :(得分:1)
也许你可以使用这个tableView方法:
- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation
在一个街区内:
[tv beginUpdates];
// delete and reloadRows
[tv endUpdates];