美文网首页
删除Cell时遇到的一个问题

删除Cell时遇到的一个问题

作者: 一场大雨 | 来源:发表于2019-11-18 16:23 被阅读0次

    有时候删除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时遇到的一个问题

          本文链接:https://www.haomeiwen.com/subject/audbictx.html