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

最近项目在使用UICollectionView的时候,发现一个大坑,问题描述:

1、无法全部加载数据,contentSize是正确的,可以滑动

2、下拉刷新的时候,执行了reloadData,页面出现空白,并且不执行delegate

解决思路:

collectionView执行了reloadData代码后,没有执行cellForItem代理方法,可能存在两种原因:

1、在执行reloadData后,可能collectionView被一层假的view所遮挡,这种情况下是不会执行cellForItem方法的,

大家可以通过层级关系查看是否存在

2、在执行reloadData的时候,代码中有把collectionView的size赋值为0,这种情况下是不会执行cellForItem方法的,

大家可以查看自己的代码

这两情况都没有解决我遇到的问题,最起码无法解释数据无法全部加载问题,

然后百度发现一个帖子,瞬间让我明白,是在collectionView的header中,我使用NSAttributedString处理html字符串,

然后用Label进行展示了,注销代码后,一切正常,这边我不做过多解释,可以查看原帖子链接:https://www.jianshu.com/p/7d9404654221#comments

帖子中有很好的解决方法,出于对私有Api的修改(因为不清楚会不会对其他界面有影响,版本的升级会不会有影响),

还有我这边的html字符串并不复杂,我是用保守的处理方式,即去除html中标签方法,方法如下:

-(NSString *)filterHTML:(NSString *)html

{

    NSScanner * scanner = [NSScanner scannerWithString:html];

    NSString * text = nil;

    while([scanner isAtEnd]==NO)

    {

        [scanner scanUpToString:@"<" intoString:nil];

        [scanner scanUpToString:@">" intoString:&text];

        html = [html stringByReplacingOccurrencesOfString:[NSString stringWithFormat:@"%@>",text] withString:@""];

    }

    return html;

}
 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值