【发布时间】:2017-10-12 16:03:14
【问题描述】:
我正在尝试使用 iOS 11 的方式在表格视图行中添加滑动操作。我想添加一个动作来删除一行。
我的测试表视图显示从 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行:不行。
我做错了什么?
【问题讨论】:
标签: ios iphone swift xcode ios11