3

我正在使用集合视图组合布局,并且需要对正交滚动部分的“userViewedCell”事件进行准确分析。我一直在使用 collectionView(willDisplay:forItemAt) 来检测何时将显示单元格,但这似乎非常有问题。

为了演示这个问题,这里是集合视图组合布局的 Apple 示例项目:https ://developer.apple.com/documentation/uikit/views_and_controls/collection_views/using_collection_view_compositional_layouts_and_diffable_data_sources

组合布局.gif

我对 Apple 代码所做的唯一更改是添加此功能:

func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
   print("will display cell at \(indexPath)")
 }

当我滚动一个正交部分时,将调用 willDisplayCell 以获取其他正交部分中的单元格。例如,我将第 0 节滚动到第 10 单元格,并且 willDisplayCell 被调用以用于 [0, 10]、[1, 10] 和 [2, 10],即使第 1 节和第 2 节仅显示前几个单元格。

一个相关的问题是,当我将第 0 部分一直滚动到开头时,将永远不会为 [0, 0]、[0, 1] 或 [0, 2] 调用 willDisplayCell。

如何解决此问题以获得准确的分析?还是我应该使用其他方法?

4

0 回答 0