根据表视图部分和行对数据模型进行重新排序(重新定位)

时间:2019-05-20 11:21:25

标签: ios swift uitableview

让我说几部分是工作日,几行是我当天的锻炼。

所以结构可能是下一个

Monday section 0
Workout 1 (row 0)
Workout 2 (row 1)

Tuesday section 1
Workout 1 (row 0)
Workout 2 (row 1)

因此,当我在各节之间移动单元格时,我实际上希望在各节中重新锻炼元素的位置。

目前我有数据模型

class Workout {
var position: Int
}

因此,现在当我将一个单元格从一个部分移到另一个部分时,我需要循环遍历[workouts]数组以重新计算源部分和目标部分中的位置。

也许有一些漂亮的解决方案,例如List带有第一个和最后一个元素,我可以简单地重新绑定它们或任何其他元素。

我看到没有列表here

1 个答案:

答案 0 :(得分:1)

要处理tableView中的重新排序,只需使用其UITableViewDataSource方法即可。

示例:

我们将下面的array用作tableView's dataSource

var arr = [["First", "Second"], ["Third", "Fourth"]]

要在对单元格重新排序时修改dataSource,请使用tableView(_:moveRowAt:to:)方法并根据dataSourcesourceIndexPath更改destinationIndexPath

func tableView(_ tableView: UITableView, moveRowAt sourceIndexPath: IndexPath, to destinationIndexPath: IndexPath) {
    let val = arr[sourceIndexPath.section][sourceIndexPath.row]
    arr[destinationIndexPath.section][destinationIndexPath.row] = val
    arr[sourceIndexPath.section].remove(at: sourceIndexPath.row)
}

此外,如上所述,List中没有类似Swift的东西。您必须使用Array来处理。