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

  • 相关阅读:
    Request Validation in ASP.NET
    ANSI、Unicode、Unicode big endian、UTF8编码
    在win7下安装SQL sever2005
    配置SQL Server 2005 以允许远程连接
    传统网站与Web标准——DIV+CSS布局实例
    打造自己的reset.css
    传统网站与Web标准——表格布局实例
    每天工作4小时的程序员
    良好的XHTML规则
    列表导航栏实例(02)——精美电子商务网站赏析
  • 原文地址:https://www.cnblogs.com/DevinSMR/p/6722072.html
Copyright © 2020-2023  润新知