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

Swift 3,交换两个表格单元格,swift,uitableview,swift3,swap,tablecell,Swift,Uitableview,Swift3,Swap,Tablecell,我主要是一名Java程序员,但我一直在学习swift,遇到了一些障碍 我正在使用UITableView创建一个匹配的定义游戏。用户可以选择一个单元格,然后选择另一个单元格以交换其位置。现在的问题是moveRow的UITableViews方法只将第一个参数移动到第二个参数的位置。这将在间隙大于0时创建级联效果 我很好奇是否有一种简单的方法可以完美地交换表视图中两个单元格的位置 例如,如果有单元格1,2,3,4,5,并选择2和4,则新图案将为:1,4,3,2,5。当前它将显示为1,3,4,2,5,因

我主要是一名Java程序员,但我一直在学习swift,遇到了一些障碍

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

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

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


这里的任何帮助都将不胜感激!多谢各位

执行该操作有两个步骤:

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

    tableView.beginUpdates()
    tableView.moveRow(at: indexPath1, to: indexPath2)
    tableView.moveRow(at: indexPath2, to: indexPath1)
    tableView.endUpdates()
    
    注意:如果您正在使用
    move
    操作,则之后不得调用
    reloadData()


执行该操作有两个步骤:

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

    tableView.beginUpdates()
    tableView.moveRow(at: indexPath1, to: indexPath2)
    tableView.moveRow(at: indexPath2, to: indexPath1)
    tableView.endUpdates()
    
    注意:如果您正在使用
    move
    操作,则之后不得调用
    reloadData()


我被愚弄了。我相信我以前做过,但是我错过了开始更新和结束更新。谢谢你的帮助,先生。非常感谢。我哑口无言。我相信我以前做过,但是我错过了开始更新和结束更新。谢谢你的帮助,先生。非常感谢。