tableViewCell重用导致图片错乱问题

在使用,SDWebImage加载图片的时候,出现图片加载混乱,具体情况是

1> 从服务器获取数据,没有滑动的时候显示正常,cell上的数据错乱显然是由于cell的重用导致的.由于图片是异步下载的,下载完成才给cell设置,但是在这个过程中用户可能会上下滑动,滑动的时候会导致cell的重用,比如第0行是空的的,第11行是3张图的,但是用户可能滑到11行然后又滑到第1行,这时第1行因为cell的重用使用的是第11行的cell,所以第1行的block回调设置的cell和第11行的block回调设置的cell是同一个,这就是问题的关键.因为图片是异步下载的,你也不知道哪个block会先回调,
2> 我用的SDWebImage加载图片的方法是:
[ImgView sd_setImageWithURL:[NSURL URLWithString:propertyImgs[i]] placeholderImage:[UIImage imageNamed:[Utils imageNameStr:@"PlaceHolder"]]];

 

      我在网上查了很多相关数据混乱问题,一般都会给出你三个解决方法,1,获取cell的时候不用dequeueReusableCellWithIdentifier,而是用cellForRowAtIndexPath获取,2,给每个cell设一个唯一标识,3,删除重用的cell,经过测试三种方法都不可取,

      解决的方案就是自定义cell里重写prepareForReuse方法,

 

     里面代码的意思是说在重用之前我把cell上盛放imgView的容器里的子视图全部移除,这样问题就完美解决了,既不会影响正常的重用,又不用多开支内存。

 

转载于:https://www.cnblogs.com/DevinSMR/p/6722072.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值