我们都知道可以恢复uitableview中的单元格,但我看到了一些奇怪的结果。 我正在创建一个自定义单元格,每个单元格有4列,每列都有一个图像 所以格式是这样的 | IMG |张图片|张图片| IMG | 返回单元格后,我正在配置每个单元格,一个例子是将第一列配置为图片1,然后将第二列配置为不同的图片
现在假设我只能在tableview中一次显示两行:
|a0|a1|a2 |a3 |
|b4|b5|b6 |b7 |
------cell c not visible to user------
|c8|c9|c10|c11|
当用户向下滚动时,上面的列'a'(a0-a3)将变为不可见,并且据我所知,单元格变为不可见将被重用于列c
上面的例子工作正常,如果我可以完全占据每个单元格/行,即我总共有12张图片。
但如果我说了10张图片(最后一行只会填充2张,而另外两张是空的,如下所示:
|a0|a1|a2 |a3 |
|b4|b5|b6 |b7 |
------row/cell 'c' not visible to user------
|c8|c9|empty|empty|
然而,当我向上滚动以查看单元格/行'c'时出现问题 我有以下图片:
|a0|a1|a2 |a3 |
------row/cell 'a' not visible to user------
|b4|b5|b6 |b7 |
|c8|c9|a2|a3|
请注意,行/单元格c的最后两列应为空,但显示的是a2和a3
我该如何解决这个问题?我正在考虑一种手动方式,即通过检查是否应该在重用时删除不必要的视图等,但可能更复杂 有没有更系统的方法来做到这一点更简单,更清洁?
有没有办法可以让返回的单元格忘记其内容,或者我自己必须这样做?
感谢
答案 0 :(得分:10)
你必须“自己动手”。每当重用UITableViewCell时,它都会保留其先前的内容。如果要重置/清除它,可以手动执行此操作。
在自定义UITableViewCell
中,您可以覆盖prepareForReuse
并重置您想要的任何内容,或在设置新内容时执行此操作。
在您的情况下,在所有四列中将UIImageView的image
属性设置为nil
应该有效。
答案 1 :(得分:8)
我最近遇到了一个类似的问题。在子视图后覆盖prepareForReuse tableview单元修复它。得到了here
的答案