UITableViewCell在快速滚动时消失

时间:2017-08-11 05:40:19

标签: ios swift uitableview tableview

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

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

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

    tableView.beginUpdate()
    tableView.endUpdate()

我注意到两种行为:

1

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

2:

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

抱歉,我无法发布任何代码,但我可能做错了什么?

P.S。:在我的tableView的行高委托方法中,我有:

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

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

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

感谢。

0 个答案:

没有答案
相关问题