2017-04-18 137 views
0

我正在寻找一种廉价的方式来知道在我的UITableViewCell中设置的图像是否与我尝试从缓存中设置的图像相同。检查设置的图像是否与缓存中的图像相同

由于我有可重复使用的单元格,当需要重新使用单元格时,我需要能够更改图像。

问题是,第一个单元格的图像设置了两次,它引发了一个我想避免的眨眼。

我必须检查“imageView.image”和从缓存中检索到的图像之间的等同性,但它不起作用。

任何线索?

+0

你想做什么? – KKRocks

+0

防止我的图像重新加载,如果他们是相同的 –

+0

您使用模型类吗? – KKRocks

回答

1

似乎您正在尝试为闪烁问题找到解决方法,可能试着调试为什么会发生这种情况。

理想情况下,您应该使用prepareForReuse并在每次单元重新使用时清除图像。此外,如果图像被缓存,则应该只设置一次,并且立即(不会像第一次在缓存中存在未命中并且必须执行网络调用的情况下一段时间)。

如果你真的必须检查图像是一样的,你可以比较有问题的图像的URL,既URLStringEquatable,可用于唯一标识图像。

+0

这与设置isSet布尔值相同。 有没有可能检查已设置图像的网址,因为我有一个DidSet主要属性,我用它来正确设置一切。 使用prepareForReuse和/或清除图像无法正常工作,我试过的第一件事。 发生这种情况是因为每次调用viewWillAppear时ios都会在indexPath处调用cellForRow,看不到我如何调试 –

+0

isSet布尔值似乎并不完全一样,布尔值只会告诉图像是否设置与否,但不是与哪个图像。如果'URL'是你的'viewModel'对象的一部分,你可以将它与以前用于设置单元格的'viewModel'进行比较,从而避免使用相同的图像再次设置它。 – Edgar

+0

另外,我刚刚尝试了一个示例master-detail项目,并且在弹出详细视图控制器时,viewWillAppear被调用到主视图控制器,但不会触发对'cellForRowAt indexPath'的调用,所以您的其他内容代码必须触发它。 – Edgar