根据当前显示的 UICollectionViewCell 更改 UISegmentedControl.selectedIndex 值

Change UISegmentedControl.selectedIndex value depending on which UICollectionViewCell is currently shown

如何根据当前显示的 UICollectionViewCell 更改 UISegmentedControl.selectedIndex 值? 我的 collectionView 将 isPagingEnabled 设置为 true,我可以根据我的 UISegmentedControl 的 selected 索引轻松地 select 不同的项目,但我该怎么做相反?

是否有一个函数在每次用户更改 collectionView 的页面时调用,该函数还提供当前显示项目的 indexPath?

访问 visibleCells 数组似乎没有任何用处。 像

这样的函数
func collectionViewDidPage(_ collectionView: UICollectionView, _ fromIndexPath: IndexPath, _ toIndexPath: IndexPath) {
    let tag = myCollectionView.cellForItem(at: toIndexPath).tag
    self.segmentedControl.selectedSegmentIndex = tag
}

其中 fromIndexPathtoIndexPath 是两个单元格的索引路径(我开始滚动的那个和我正在滚动的那个将结束滚动)可以工作。

我能做什么?

以下代码似乎运行良好:

func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
    let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
    segmentedControl.selectedSegmentIndex = Int(pageNumber)
}