Swift 3、交换两个table单元格
Swift 3, Swap two table cells
我主要是一名 Java 程序员,但我一直在学习 swift 并且遇到了一些障碍。
我正在使用 UITableView 创建匹配定义游戏。用户可以 select 一个单元格然后 select 另一个单元格来交换他们的位置。现在的问题是 UITableViews 的 moveRow 方法只将第一个参数移动到第二个参数位置。当间隙大于 0 时,这会产生级联效应。
我很好奇是否有一种简单的方法可以完美地交换 table 视图中两个单元格的位置。
例如,如果您有单元格 1,2,3,4,5,而您 select 2 和 4,则新模式将为:1,4,3,2,5。目前它会显示为 1,3,4,2,5,因为它只移动第一个 selected 单元格。
如有任何帮助,我们将不胜感激!谢谢你。
执行该操作有两个步骤:
- 交换数据源数组中的项目(无可见效果)。要保留索引,请删除 较高 索引处的项目并将其存储在变量中,然后是较低索引处的项目。但是首先在 lower 插入项目然后在 higher index.
包装在 beginUpdates / endUpdates
块中交换 table 视图中的行。新索引是自动计算的。
tableView.beginUpdates()
tableView.moveRow(at: indexPath1, to: indexPath2)
tableView.moveRow(at: indexPath2, to: indexPath1)
tableView.endUpdates()
注意:如果您正在使用 move
操作,您 之后不得 调用 reloadData()
。
我主要是一名 Java 程序员,但我一直在学习 swift 并且遇到了一些障碍。
我正在使用 UITableView 创建匹配定义游戏。用户可以 select 一个单元格然后 select 另一个单元格来交换他们的位置。现在的问题是 UITableViews 的 moveRow 方法只将第一个参数移动到第二个参数位置。当间隙大于 0 时,这会产生级联效应。
我很好奇是否有一种简单的方法可以完美地交换 table 视图中两个单元格的位置。
例如,如果您有单元格 1,2,3,4,5,而您 select 2 和 4,则新模式将为:1,4,3,2,5。目前它会显示为 1,3,4,2,5,因为它只移动第一个 selected 单元格。
如有任何帮助,我们将不胜感激!谢谢你。
执行该操作有两个步骤:
- 交换数据源数组中的项目(无可见效果)。要保留索引,请删除 较高 索引处的项目并将其存储在变量中,然后是较低索引处的项目。但是首先在 lower 插入项目然后在 higher index.
包装在
beginUpdates / endUpdates
块中交换 table 视图中的行。新索引是自动计算的。tableView.beginUpdates() tableView.moveRow(at: indexPath1, to: indexPath2) tableView.moveRow(at: indexPath2, to: indexPath1) tableView.endUpdates()
注意:如果您正在使用
move
操作,您 之后不得 调用reloadData()
。