如何根据当前显示的UICollectionViewCell更改UISegmentedControl.selectedIndex值?我的collectionView将isPagingEnabled设置为true,我可以根据UISegmentedControl的所选索引轻松选择不同的项目,但我怎么能做相反的事情呢?
是否有一个函数在用户每次更改collectionView的页面时被调用,该页面还提供当前显示项目的indexPath
访问visibleCells数组似乎没有任何用处。类似的功能
func collectionViewDidPage(_ collectionView: UICollectionView, _ fromIndexPath: IndexPath, _ toIndexPath: IndexPath) {
let tag = myCollectionView.cellForItem(at: toIndexPath).tag
self.segmentedControl.selectedSegmentIndex = tag
}
其中fromIndexPath和toIndexPath[/strong>是两个单元格(我开始滚动的单元格和我将结束滚动的单元格(的索引路径。
我能做什么?
以下代码似乎运行得很好:
func scrollViewDidEndDecelerating(_ scrollView: UIScrollView) {
let pageNumber = round(scrollView.contentOffset.x / scrollView.frame.size.width)
segmentedControl.selectedSegmentIndex = Int(pageNumber)
}