【发布时间】:2021-08-01 19:25:45
【问题描述】:
我有一个UICollectionView,具有以下设置:
Estimate Size = None
Content Insets = Never
Scroll Direction = Vertical
Paging Enabled = true
当我滚动到第二个单元格时,cellForItemAt 方法被触发两次,同时索引 1 和 2,因此,当我滑动到最后一个单元格时,cellForItemAt 方法不起作用。
-
cellForItemAt仅在滑动到第二个单元格时无法正常工作,在所有其他情况下都可以(每次滑动一个索引) - 我还注意到
cellForItemAt不是在出现新的可见单元格时立即触发,而是延迟(顶部大约 100 像素,标准高度为 568 像素单元格)
由于这个问题,我没有在最后一个单元格上工作cellForItemAt,在单元格中也有通过 URL 加载的照片(我试过不加载图像,问题是一样的),它们在随机细胞,这也是个问题。
我不知道如何解释和解决这个问题,谢谢您的帮助
向上
override func viewDidLoad() {
super.viewDidLoad()
collectionView.register(UINib(nibName: TestCell.identifier, bundle: nil), forCellWithReuseIdentifier: TestCell.identifier)
collectionView.dataSource = self
collectionView.delegate = self
}
func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
print("cellForItemAt: \(indexPath.item)")
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: TestCell.identifier, for: indexPath) as! TestCell
return cell
}
func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
return 5
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
return CGSize(width: UIScreen.main.bounds.width, height: UIScreen.main.bounds.height)
}
func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
return 0
}
如果我滚动到第二个单元格,cellForItemAt 会工作两次,而当最后一个单元格时,cellForItemAt 根本不起作用。因此,最后一个小区的配置方法不起作用。我举了一个简单的例子,但问题是一样的。
如何正确加载用户滚动条上的单元格?
【问题讨论】:
-
cellForItem可以随时以任何顺序调用。您的代码不应该对特定数量的调用或订单有任何要求。 “无法正常工作”是什么意思?它应该怎么做?它有什么作用?你能展示你的代码吗? -
@Paulw11,为什么当我滚动一个单元格时,我加载了两个?当我到达最后一个时它根本不起作用,所以单元格本身的方法不能正常工作更新了问题。
-
在您的 sn-p 中,
cellForItemAt没有任何反应。您将一个单元格出列并返回它,就是这样。究竟是什么不起作用?
标签: ios swift uiviewcontroller