保存重新排序的uicollectionview单元格无法正常工作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了保存重新排序的uicollectionview单元格无法正常工作相关的知识,希望对你有一定的参考价值。

我终于可以在集合视图中成功地对单元格进行重新排序,但是在重新排序之后,尽管有UserDefaults并且在重新启动应用程序后看到处于重新排序状态的集合视图,我无法保存。

func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
        if collectionView == 1configcollectionview {
            let itemToMove = keystring[sourceIndexPath.row]
            keystring.remove(at: sourceIndexPath.row)
            keystring.insert(itemToMove, at: destinationIndexPath.row)
            print("Starting Index: (sourceIndexPath.row)")
            print("Ending Index: (destinationIndexPath.row)")
            UserDefaults.standard.set(keystring, forKey:"keystringreorder")
            //  let movekey = keystring.remove(at: sourceIndexPath.item)
            //  keystring.insert(movekey, at: destinationIndexPath.item)
        }
        if collectionView == 2configcollectionview {
            let movekey1 = keystring1.remove(at: sourceIndexPath.item)
            keystring1.insert(movekey1, at: destinationIndexPath.item)
            print("Starting Index: (sourceIndexPath.item)")
            print("Ending Index: (destinationIndexPath.item)")
            UserDefaults.standard.set(keystring1, forKey:"keystringreorder1")

        }
        if collectionView == 3configcollectionview {
            let movekey2 = keystring2.remove(at: sourceIndexPath.item)
            keystring2.insert(movekey2, at: destinationIndexPath.item)
            print("Starting Index: (sourceIndexPath.item)")
            print("Ending Index: (destinationIndexPath.item)")
            UserDefaults.standard.set(keystring2, forKey:"keystringreorder2")


        }


    }

 override func viewDidLoad() {
        super.viewDidLoad()
    let orderkeystring = UserDefaults.standard.object(forKey:"keystringreorder")
        if(orderkeystring != nil) {
            keystring = orderkeystring as! [String]
        }
    }
答案

我相信你必须使用reloadData()方法重新加载collectionView数据

let orderkeystring = UserDefaults.standard.object(forKey:"keystringreorder")
        if(orderkeystring != nil) {
            keystring = orderkeystring as! [String]
            // Don't forget to reload data here 
            1configcollectionview,reloadData()
        }

以上是关于保存重新排序的uicollectionview单元格无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

重新排序 UICollectionView 的单元格

如何在锁定其中一些单元格时重新排序 UICollectionView 单元格

UICollectionView 单元格的水平重新排序

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

UICollectionView 在刷新时重复和重新排序单元格内容

使用全宽和动态高度单元格重新排序 UICollectionView 时的 UI 问题