Unable to swipe to delete with tableview using diffable data source in iOS 13

旧时模样 提交于 2020-07-02 11:49:08

问题


I'm updating a UITableViewController to use the new UITableViewDiffableDataSource, I have everything working except Swipe to delete.

This is an example of how I use swipe to delete

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])
}

But this doesn't not work in a UITableViewController that has UITableViewDiffableDataSource

There is no swipe, a break point within the method is never called either

I thought this was a beta bug, but I updated to Xcode 11 GM and that same thing is occurring.

Thanks for any advice


回答1:


You should subclass UITableViewDiffableDataSource and return true for the rows you want to enable this for in:

override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool



回答2:


It's true that the docs for tableView(_:canEditRowAt:) say:

The method permits the data source to exclude individual rows from being treated as editable. Editable rows display the insertion or deletion control in their cells. If this method is not implemented, all rows are assumed to be editable

However UITableViewDiffableDataSource, does implement that method and it seems to return false by default (though I can't find that documented anywhere).

In fact the sample code from WWDC 2019 sessions 215 and 220 implements a custom UITableViewDiffableDataSource subclass like this:

class DataSource: UITableViewDiffableDataSource<SectionType, ItemType> {
    // ... 
    override func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
        return true
    }
    // ...
}


来源:https://stackoverflow.com/questions/57898044/unable-to-swipe-to-delete-with-tableview-using-diffable-data-source-in-ios-13

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!