您的位置:首页 > 移动开发 > IOS开发

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

2017-10-11 16:05 597 查看
有这样一个场景,新增了一个数据,然后再插入一个新的数据,会因为numberOfRowInSection多次刷新后个数与数据源不一致而崩溃。

插入方法:

[_tableView
beginUpdates];

        [_tableViewinsertRowsAtIndexPaths:indexPaths
withRowAnimation: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方法代替这两个方法
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐