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

  • 相关阅读:
    触摸屏与usb鼠标同时支持
    QT国际化(lupdate/linguits/lrelease)生成.ts,转换成.qm方法
    Qt5 使用lambda
    c++中lambda表达式的用法
    异或运算的作用
    函数指针和指针函数用法和区别
    前端html页面学习---html部分
    二:maven构建module
    一:使用maven构建项目
    maven项目发布到tomcat后没有lib目录解决方案
  • 原文地址:https://www.cnblogs.com/DevinSMR/p/6722072.html
Copyright © 2011-2022 走看看