HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何在UICollectionView performBatchUpdates块中对移动,插入,删除和更新进行排序?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的UICollectionView中,我使用一个简单的自定义对象数组来生成显示单元格.有时候数据会发生变化,我想一次性对变化进行动画处理.我选择通过跟踪第二个数组中的所有更改,区分两者,并在performBatchupdates块内部生成一组移动,插入,删除和更新操作来实现此目的.我现在意识到在同一个块中完成所有这些操作非常棘手,因为你不得不担心索引操作的顺序.事实上,this issue的接受答案是错误的(但在评论中已经纠正).

文档似乎很缺乏,但它涵盖了一个例:

但是,该文档没有讨论何时处理移动.如果我在同一个performBatchupdates中@L_136_12@moveItemATindexPath和deleteItemsATindexPaths,那么移动索引是否应该相对于删除前或删除后的订单? insertItemsATindexPaths怎么样?

最后,我遇到了在同一操作中调用reloadItemsATindexPaths和moveItemATindexPath的问题:

有没有办法在同一个performBatchupdates中执行我想要的所有操作?如果是,那么更新相对于其他更新的处理顺序是什么?如果没有,人们通常会做什么?在完成所有其他操作后重新加载数据?之前?如果所有的动画都发生在一个阶段,我更喜欢.

@H_772_11@解决方法
对于移动操作,from indexPath是预删除索引,to indexPath是删除后索引.仅应为尚未插入,删除或移动的indexPath指定重新加载.这可能是您看到NSInternalInconsistencyException的原因.

验证操作的一种方便方法是正确设置的:重新加载,插入和移动到索引路径的集合不应该有任何重复,并且重新加载,删除和移动索引路径的集合不应该有任何重复.

更新:

您移动的项目似乎也未更新,但仅移动.因此,如果需要更新和移动项目,可以在批量更新之前或之后执行重新加载(取决于数据源的状态).

大佬总结

以上是大佬教程为你收集整理的ios – 如何在UICollectionView performBatchUpdates块中对移动,插入,删除和更新进行排序?全部内容,希望文章能够帮你解决ios – 如何在UICollectionView performBatchUpdates块中对移动,插入,删除和更新进行排序?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。