如何修复uicollectionview中的单元格顺序
Posted
技术标签:
【中文标题】如何修复uicollectionview中的单元格顺序【英文标题】:How to fix order of cells in uicollectionview 【发布时间】:2019-04-03 19:23:29 【问题描述】:我有带有 collectionView 的 viewController - 15 个单元格,都是一种类型。单元格内是一个带有标题数字的按钮,或挂锁(锁定章节)。当我第一次加载这个视图时,一切正常,单元格的顺序正确(1-15)。当我单击按钮时,会打开带有章节的新视图。当我从当前完成的章节返回上一个视图时,我需要解锁下一个(将其标题更改为数字,关闭挂锁图片并启用用户交互)。我称这个函数为:
func updateButtons()
for i in 0..<chapterCollectionView.visibleCells.count
if let cell = chapterCollectionView.visibleCells[i] as? ExampleCollectionViewCell
if i <= PLAYERS[ACTUAL_PLAYER].progress
cell.button.setTitle(String(i + 1), for: .normal)
cell.button.isUserInteractionEnabled = true
cell.button.setImage(nil, for: .normal)
else
cell.button.setTitle("", for: .normal)
cell.button.isUserInteractionEnabled = false
if self.view.traitCollection.horizontalSizeClass == .regular && self.view.traitCollection.verticalSizeClass == .regular
cell.button.setImage(UIImage(named: "padlock1"), for: .normal)
else
cell.button.setImage(UIImage(named: "padlock"), for: .normal)
但是当我尝试时,所有按钮都会随机改变它们的位置。有没有办法修复他们的订单。图片链接在评论中。
【问题讨论】:
图片链接:imgur.com/bAlYtv6,imgur.com/hIVU4Ks 你重新加载collectionview,这样更好,因为单元格被重复使用了。 使用 reloadData() 重新加载? 【参考方案1】:reloadData()
与collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell
函数配合使用。谢谢拉尔姆
【讨论】:
以上是关于如何修复uicollectionview中的单元格顺序的主要内容,如果未能解决你的问题,请参考以下文章
如何在 willDisplay 单元格回调中访问 UICollectionView 中的特定单元格
如何防止重新排序 UICollectionView 中的最后一个单元格?