我一直试图弄清楚如何使用第二个单元格加载3个单元格的集合视图,最后我通过StackOverFlow查看了它。但是,我遇到的代码对我来说有点混乱。有没有人能够解释为什么下面的代码在使我的集合视图单元格(覆盖整个屏幕)从3个单元格中的第2个开始? (这是我一直希望实现的效果,但我想更多地了解这个代码为什么能够正常工作。
在这段代码中,有一个bool变量和一个if语句,为什么需要它们呢?当我取出boolean变量和if语句时,集合视图无法滚动。
这段代码如何正常工作?
谢谢。
var onceOnly = false
internal override func collectionView(_ collectionView: UICollectionView, willDisplay cell: UICollectionViewCell, forItemAt indexPath: IndexPath) {
if !onceOnly {
let indexToScrollTo = IndexPath(item: 1, section: 0)
self.collectionView.scrollToItem(at: indexToScrollTo, at: .left, animated: false)
onceOnly = true
}
}
1-这在scrollToItem
的Docs
let indexToScrollTo = IndexPath(item: 1, section: 0)
self.collectionView.scrollToItem(at: indexToScrollTo, at: .left, animated: false)
使collectionView滚动到列表中的第二个项目
2-
当我取出boolean变量和if语句时,集合视图无法滚动
因为willDisplay
是为每个单元格显示调用的,所以当你滚动到第三个单元格时调用willdisplay
会导致collectionView转到第二个单元格,所以它会一直卡在第二个单元格中(这似乎没有滚动,但滚动发生,你不会注意到,因为它立即发生),所以布尔值var需要使滚动动作发生一次滚动到指定的索引