ios - 如何在 `UICollectionViewCell` 位置更改时正确移动数组项

标签 ios swift drag-and-drop uicollectionview

我有一个 UICollectionView,用户可以在查看每个 Swift 拖放页面后更改单元格的位置。我确定了一种能够更新字符串数组并跟踪此函数中的 Collection View 的方法:

func collectionView(_ collectionView: UICollectionView, moveItemAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {

    let positionPreviouslyHoldingTheSelectedIndex = list[sourceIndexPath.item] 

    // put the select index in the intended destination index

    list[sourceIndexPath.item] = list[destinationIndexPath.item]


    // put the cell/index of the destination index in the selected positions old index

    list[destinationIndexPath.item] = positionPreviouslyHoldingTheSelectedIndex
}

但上面的代码按预期更新了数组,这变得很奇怪,一旦调用 moveItemAt 我将如何更新数组/列表。

最佳答案

有 2 个 IndexPath,你必须从 sourceIndexPath 中去掉数组元素并将其添加到 destinationIndexPath 中,如下所示:

    let item = list.remove(at: sourceIndexPath.item)
    list.insert(item, at: destinationIndexPath.item)

关于ios - 如何在 `UICollectionViewCell` 位置更改时正确移动数组项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49114298/

相关文章:

ios - 在 swift 中实现文档选择器(iOS)

ios - Firebase Swift 的可扩展性 : Query vs Duplicate data

ios - 应用剪切路径后,如何确定点是否位于路径内部?

java - 拖放程序项目

ios - 以编程方式将字体更改为 System Semibold

ios - iCloud 中基于 SQLite 的核心数据中的有序关系

javascript - ExtJs 4 - 如何拖放文本(或文本区域)字段的内容?

java - 如何在java - android中设置dragshadow不透明度?

ios - 使用 "valueForKey:"访问私有(private)变量但出现运行时错误

swift - 如何在 Firebase 中存储警报文本?