Swift 3,交换两个表格单元格

时间:2017-01-01 18:11:20

标签: swift uitableview swift3 swap tablecell

我主要是一名Java程序员,但我学得很快,而且我遇到了一些障碍。

我正在使用UITableView创建匹配的定义游戏。用户可以选择一个单元格,然后选择另一个单元格来交换其位置。现在的问题是moveRow的UITableViews方法只将第一个参数移动到第二个参数位置。当间隙大于0时,这会产生级联效应。

我很好奇是否有一种简单的方法可以完美地交换表视图中两个单元格的位置。

例如,如果您有单元格1,2,3,4,5并且选择2和4,则新模式将为:1,4,3,2,5。目前它将显示为1,3,4,2,5,因为它只移动第一个选定的单元格。

这里的任何帮助都会非常感激!谢谢。

1 个答案:

答案 0 :(得分:2)

执行操作有两个步骤:

  • 交换数据源数组中的项目(无可见效果)。要保留索引,请删除更高索引处的项目,并将其存储在变量中,然后将其存储在较低索引处。但首先在较低然后在较高的索引处插入项目。
  • 包裹在beginUpdates / endUpdates块中交换表视图中的行。新索引是自动计算的。

    tableView.beginUpdates()
    tableView.moveRow(at: indexPath1, to: indexPath2)
    tableView.moveRow(at: indexPath2, to: indexPath1)
    tableView.endUpdates()
    

    注意:如果您使用的是move操作,则 >之后