iOS调试——关于insertRowsAtIndexPaths方法崩溃以及动画实效的处理办法

来源:互联网 发布:源美网络 半价商城 编辑:程序博客网 时间:2024/06/03 12:42

有这样一个场景,新增了一个数据,然后再插入一个新的数据,会因为numberOfRowInSection多次刷新后个数与数据源不一致而崩溃。

插入方法:

[_tableView beginUpdates];

        [_tableViewinsertRowsAtIndexPaths:indexPathswithRowAnimation:UITableViewRowAnimationLeft];

        [_tableViewendUpdates];


代理方法:

- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section

{

    return _dataArray.count;

}


处理办法:

1.在插入前就保证数据个数一致,比如更新了数据后就调用reloadData;

2.插入方法改为新增数据源,然后reloadData


插入动画失效处理:

1.使用了reloadData使动画失效,即使先插入,后reloadData.(插入会更新UI,其实不需要再reloadData)

2.插入方法放在了animation动画中,需要将插入提出来


另外,测试发现beginUpdates和endUpdates可以不要,虽然是作为动画的处理,去掉不影响动画,不过还是按苹果要求的在做插入删除时加上吧,另外发现在iOS11中苹果有新的block方法代替这两个方法

阅读全文
0 0
原创粉丝点击