Ios UITableViewCell在快速滚动时消失

Ios UITableViewCell在快速滚动时消失,ios,swift,uitableview,tableview,Ios,Swift,Uitableview,Tableview,我知道有很多关于tableViewCell在卷轴上消失的问题,但这些都不符合我的情况 我说的消失,我的意思是整个细胞消失了,而不是它的一些子视图 以下是我的情况: 我有一个带有自定义单元格的tableView,每个单元格都非常复杂,有些甚至可以容纳三个CollectionView。这些单元格中的大多数只显示一次,所以我缓存它们。我从网络中检索数据,并使用它填充单元格。由于有时数据可能不完全可用,单元格的某些部分需要隐藏:单元格将其CollectionView的某些高度约束设置为零,isHidde

我知道有很多关于tableViewCell在卷轴上消失的问题,但这些都不符合我的情况

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

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

    tableView.beginUpdate()
    tableView.endUpdate()
我注意到两种行为:

1: 如果单元格的任何部分都没有隐藏,则该单元格工作正常,除非我(从下到上)滚动过快,否则该单元格将在超出tableView的范围之前消失。当我滚动慢,这不会发生

2: 如果单元格的某个部分被隐藏,即使我滚动得很慢,单元格在退出tableView之前也会消失

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

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

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat {
    return cellHeights[indexPath.row] ?? 0.1
}
cellHeights
是我使用字典存储相应单元格的计算高度的地方。我确信这些高度值是正确的,因为当我从上向下滚动时,单元格看起来很正常。只有当我从下往上滚动时才会发生这种情况

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


谢谢。

我可以看到CellForRowAtTableViewDexpath的TableView尝试实现estimatedHeightForRowAt UITableViewDelegate方法并返回与您在heightForRowAt UITableViewDelegate方法中返回的高度相同的高度吗?在我实现EstimatedRowhight:**断言失败后,它会给我此错误(启动时崩溃)-[UISectionRowData refreshWithSection:tableView:tableViewRowData:,/BuildRoot/Library/Caches/com.apple.xbs/Sources/UIKit_Sim/UIKit-3600.7.47/UITableViewRowData.m:537 libc++abi.dylib:terminate_处理程序意外地在PGDev处引发异常