UITableViewCell在快速滚动时消失

我知道有很多关于tableViewCell在滚动上消失的问题,但这些都不适合我的情况。

我说消失了,我的意思是整个细胞消失了,而不是它的一些子视图。

这是我的情况:
我有一个带有自定义单元格的tableView,每个单元格都非常复杂,有些甚至可以在其中托管最多三个collectionViews。 大多数这些单元格只显示一次,所以我将它们缓存。 我从网络中检索数据,并使用它来填充单元格。 由于有时数据可能无法完全可用,因此需要隐藏单元格的某些部分:单元格将其一些collectionViews的高度约束设置为零,并且isHidden为true,然后通知tableView,谁将重新加载单元格高度使用:

tableView.beginUpdate() tableView.endUpdate() 

我注意到两种行为:

1:

如果没有隐藏单元格的部分,则单元格工作正常,除非我滚动(从下向上)太快,单元格在离开tableView的边界之前消失。 当我滚动慢时,这不会发生。

2:

如果单元格的某些部分被隐藏,单元格将在离开tableView之前消失。即使我滚动得非常慢。

对不起,我不能发布任何代码,但我可能做错了什么?

PS:在我的tableView的行高委托方法中,我有:

 func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat { return cellHeights[indexPath.row] ?? 0.1 } 

cellHeights是我使用字典来存储相应单元格的计算高度的地方。 我确信这些高度值是正确的,因为当我从上往下滚动时,单元格看起来很正常。 这只发生在我从下往上滚动时。

我做了一些默认高度0.1实验。 当我把它改为1000 ,细胞随机消失得更多。 0.1看起来相对稳定,但上述问题仍然存在。

谢谢。