In my App, one screen has table view and displaying "Edit" and "Delete" buttons on swipe UITableViewCell
.
All is working good but issue is in default animation of UITableViewCell
in iOS 11.
I know some behaviour and funda are changed in iOS 11. When you are continue pulling to swipe your cell then editActionsForRowAt
method will be called automatically.
Some times it's good but when you added more then one button on table swipe then looking ugly behaviour.
Look at below, Default behaviour of swipe cell in iOS 10 and iOS 11.
iOS 10:
iOS 11:
You can see in iOS 11
if I pull to swipe then automatically editActionsForRowAt
method os call and display alert message.
My question: Is there any why to stop this behaviour of iOS 11 and code for that?
Because if your table has more then 2 button then it's looking ugly.
This seems to do what you are looking for. However the animation isn't exactly the same as in iOS 10 but it eliminates the full swipe, and still looks good.
@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let deleteAction = UIContextualAction.init(style: UIContextualAction.Style.destructive, title: "Delete", handler: { (action, view, completion) in
//TODO: Delete
completion(true)
})
let editAction = UIContextualAction.init(style: UIContextualAction.Style.normal, title: "Edit", handler: { (action, view, completion) in
//TODO: Edit
completion(true)
})
let config = UISwipeActionsConfiguration(actions: [deleteAction, editAction])
config.performsFirstActionWithFullSwipe = false
return config
}
The key line is config.performsFirstActionWithFullSwipe = false
as this will disable the full swipe.
The above code will override func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath)
on iOS 11 but your editActionsforRowAt
will still be used for sub iOS 10 devices.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With