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的容器里的子視圖全部移除,這樣問題就完美解決了,既不會影響正常的重用,又不用多開支內存。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM