我知道有很多关于tableViewCell在滚动上消失的问题,但这些都不符合我的情况。
我说消失了,我的意思是整个细胞消失了,而不是它的一些子视图。
这是我的情况:
我有一个带有自定义单元格的tableView,每个单元格都非常复杂,有些甚至可以在其中托管最多三个collectionView。大多数这些单元格只显示一次,因此我将其缓存。我从网络中检索数据,并使用它来填充单元格。由于有时数据可能无法完全可用,因此需要隐藏单元格的某些部分:单元格将其一些collectionViews的高度约束设置为零,并且isHidden为true,然后通知tableView,谁将重新加载单元格高度使用:
tableView.beginUpdate()
tableView.endUpdate()
我注意到两种行为:
如果没有隐藏单元格的部分,则单元格工作正常,除非我滚动(从下向上)太快,单元格在离开tableView的边界之前消失。当我滚动慢时,这不会发生。
如果单元格的某些部分被隐藏,单元格将在离开tableView之前消失。即使我滚动得非常慢。
抱歉,我无法发布任何代码,但我可能做错了什么?
P.S。:在我的tableView的行高委托方法中,我有:
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
return cellHeights[indexPath.row] ?? 0.1
}
cellHeights
是我使用字典来存储相应单元格的计算高度的地方。我确信这些高度值是正确的,因为当我从上往下滚动时,单元格看起来很正常。这只发生在我从下往上滚动时。
我使用默认高度0.1
进行了一些实验。当我将其更改为1000
时,细胞会随机消失。 0.1
看起来相对稳定,但上述问题仍然存在。
感谢。