删除Cell时遇到的一个问题

有时候删除Cell的时候,不是直接在代理里进行的,那么这时候执行删除操作,如果只执行以下代码:

[self.tableView beginUpdates];            

[self.dataArray removeObjectAtIndex:index];           

[self.tableView deleteRow:index inSection:0 withRowAnimation:UITableViewRowAnimationFade];           

[self.tableView endUpdates];  

则会发现后面多次删除时,传过来的index并没有变,还是原来的那一个,这是因为使用

[self.tableView beginUpdates];

[self.tableView endUpdates];

这一对方法完成后,并没有reloadData,只是在动画上对Cell的位置进行了调整。

下面的方式,可以解决该问题:

NSLog(@"1");

[CATransaction begin];           

[CATransaction setCompletionBlock:^{                        

        [self.tableView reloadData];

        NSLog(@"3");       

}];            

[self.tableView beginUpdates];            

[self.dataArray removeObjectAtIndex:index];            

[self.tableView deleteRow:index inSection:0 withRowAnimation:UITableViewRowAnimationFade];           

[self.tableView endUpdates];           

[CATransaction commit];

NSLog(@"2");

以上打印顺序是1,2,3。删除动画执行完成之后,reloadData,这样下次再删除时,传过来的index就是刷新后的。

你可能感兴趣的:(删除Cell时遇到的一个问题)