Dog*_*fee 4 uitableview swift ios13 diffabledatasource
我正在更新,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])
}
Run Code Online (Sandbox Code Playgroud)
但这在UITableViewController具有UITableViewDiffableDataSource
没有滑动,方法中的断点也不会被调用
我以为这是一个Beta错误,但是我更新到了Xcode 11 GM,并且发生了同样的事情。
感谢您的任何建议
您应该子类化UITableViewDiffableDataSource并返回true要在其中启用此功能的行:
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool
Run Code Online (Sandbox Code Playgroud)
的确,文档tableView(_:canEditRowAt:)说:
该方法允许数据源将单个行排除在可编辑范围之外。可编辑的行在其单元格中显示插入或删除控件。如果未实现此方法,则假定所有行都是可编辑的
但是UITableViewDiffableDataSource,确实实现了该方法,并且它似乎false默认返回(尽管我在任何地方都找不到该文档)。
实际上,来自WWDC 2019会议215和220 的示例代码实现了一个自定义UITableViewDiffableDataSource子类,如下所示:
class DataSource: UITableViewDiffableDataSource<SectionType, ItemType> {
// ...
override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
// ...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
451 次 |
| 最近记录: |