ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

UICollectionView系统BUG记录— reloadData后变空白,cellForItemAtIndexPath不执行

2021-07-11 21:37:10  阅读:193  来源: 互联网

标签:cell 发现 UICollectionView reloadData 后变 空白 执行 BUG 属性



起因

项目列表里在间隔很短时间内去重复reloadData,出现UICollectionView在reloadData后变成空白现象。发现contentSize正常,页面能够正常滑动,但是所有的cell都不显示,visiableCells属性为空。调试发现唯独cellForItemAtIndexPath这个回调方法不执行。
ps: 也有人遇到说界面上所有的cell的hidden属性都变为YES了,其实所有滑出页进入复用池的cell都会被hidden。

调研:

通过对比发现collectionView变空白前后的属性,发现_reloadingSuspendedCount这个私有属性的值被置为-1。
变空白前后属性对比

最终发现这个属性为0时,reloadData才会真正执行的,它在insert、delete、move操作前会先被++,以保证在执行相关动效是不被reloadData打乱,执行完毕后--。调试发现值会<0,特别是前一次reload未执行完毕又reload一次。

解决方案

利用runtime将_resumeReloads属性替换,发现_reloadingSuspendedCount < 0时及时纠正为0。
个人库

标签:cell,发现,UICollectionView,reloadData,后变,空白,执行,BUG,属性
来源: https://www.cnblogs.com/songtangjie/p/14999678.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有