如何修复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) -&gt; UICollectionViewCell 函数配合使用。谢谢拉尔姆

【讨论】:

以上是关于如何修复uicollectionview中的单元格顺序的主要内容,如果未能解决你的问题,请参考以下文章

如何获取UICollectionView中选中的单元格索引

如何在 willDisplay 单元格回调中访问 UICollectionView 中的特定单元格

如何防止重新排序 UICollectionView 中的最后一个单元格?

如何限制 UICollectionView 中的可选单元格

如何删除 UICollectionView 单元格中的单个对象?

如何滚动到 UITableView 或 UICollectionView 中的最后一个单元格之外