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的容器里的子视图全部移除,这样问题就完美解决了,既不会影响正常的重用,又不用多开支内存。

 

posted @ 2017-04-17 11:33  恒远也  阅读(1825)  评论(0编辑  收藏  举报