1
我想使用iOS 11的方式在表视图行中添加滑动操作。我想添加一个操作来删除一行。UITableView - 破坏性的UIContextualAction不重新载入数据
我的测试表视图显示数字0到9,数据源是一个整数的简单阵列,称为numbers
:
class ViewController: UIViewController {
var numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
}
当我选择一排,我打印的numbers
关联值:
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print(numbers[indexPath.row])
tableView.deselectRow(at: indexPath, animated: true)
}
我实现如下的新的委托trailingSwipeActionsConfigurationForRowAt
:
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let delete = UIContextualAction(style: .destructive, title: "Delete") { (_, _, completionHandler) in
self.numbers.remove(at: indexPath.row)
completionHandler(true)
}
return UISwipeActionsConfiguration(actions: [delete])
}
当我在一行上滑动时,删除工作正常。但是,这是我的问题,当我删除后选择另一行,相关IndexPath是错误的...
例子:
- 我选择第一行,打印的值是0:OK。
- 我删除第一行。
- 我选择新的第一行,打印的值是2,因为参数中传入的IndexPath是第1行,而不是第0行:不正确。
我该怎么做错误的方式?
感谢您的支持!我对完成处理程序缺少文档感到困惑。作为传递给'UIContextualAction'初始值设定项的闭包模块中的一个参数,我想这不是我们可以定义的东西吗? – aganders3