我正在更新,UITableViewController
以使用新的UITableViewDiffableDataSource
,但所有工作都正常,但要滑动删除即可。
这是我如何使用滑动删除的示例
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? { let lockedAction = UIContextualAction(style: .normal, title: "TEST") { (_, _, completion) in print("tapped....") completion(true) } return UISwipeActionsConfiguration(actions: [lockedAction]) }
但这在UITableViewController
具有UITableViewDiffableDataSource
没有滑动,方法中的断点也不会被调用
我以为这是一个Beta错误,但是我更新到了Xcode 11 GM,并且发生了同样的事情。
感谢您的任何建议
您应该子类化UITableViewDiffableDataSource
并返回true
要在其中启用此功能的行:
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool
的确,文档tableView(_:canEditRowAt:)
说:
该方法允许数据源将单个行排除在可编辑范围之外。可编辑的行在其单元格中显示插入或删除控件。如果未实现此方法,则假定所有行都是可编辑的
但是UITableViewDiffableDataSource
,确实实现了该方法,并且它似乎false
默认返回(尽管我在任何地方都找不到该文档)。
实际上,来自WWDC 2019会议215和220 的示例代码实现了一个自定义UITableViewDiffableDataSource
子类,如下所示:
class DataSource: UITableViewDiffableDataSource {
// ...
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
// ...
}