请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

tableView数据刷新的问题

老师你好,之前面试中有问到UITableView是通过cell复用创建的,每个cell有一张图片,通过网络请求获取的,可是如果在请求图片时滑动tableView,之前的cell消失并被复用了,那请求到的图片我怎么处理?我怎么确定现在的cell是否存在,而不是复用后的cell。

正在回答

2回答

图片下载是跟url绑定的,每次cell重用的时候数据要重新指定,这一步一般发生在主线程。后续图片在子线程下载完成准备设置的时候,要预先判断当前imageview的url是否是曾经指定的,如果不是,不设置图片,否则设置,具体你可以看看sdwebimage的框架实现

0 回复 有任何疑惑可以回复我~
  • 非常感谢!
    回复 有任何疑惑可以回复我~ 2018-12-22 13:10:39
  • 夜鸽 回复 提问者 weixin_慕运维6385236 #2
    1、是要问SDWeb的图片加载策略,加载图片前会先取消掉正在下载的操作,然后才进行下载/缓存取图。2、如果是不存在屏幕上,cell.window会是nil。如果是重用了,会触发prepareForReuse方法。
    回复 有任何疑惑可以回复我~ 2020-09-02 09:44:35
滨滨_0 2019-01-31 12:14:16

这个问题看SDWebImage就有答案,在加载图片的时候,首先会取消掉已经正在下载的操作,然后在进行下载或者在缓存中拿

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信