Last updated on: May 27, 2023
In this tutorial, I will show you how to delete an item from an UITableView by swiping the cell to the left to reveal the Delete button.
It’s very easy to implement and won’t take you over 2 minutes to add it to your TableView.
The only thing you have to do is add the following methods to the class where the tableview’s datasource is:
@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let deleteAction = UIContextualAction(style: .destructive, title: "Delete") { _, _, complete in
self.Items.remove(at: indexPath.row)
self.tableView.deleteRows(at: [indexPath], with: .automatic)
complete(true)
}
deleteAction.backgroundColor = .red
let configuration = UISwipeActionsConfiguration(actions: [deleteAction])
configuration.performsFirstActionWithFullSwipe = true
return configuration
}
func tableView(_ tableView: UITableView, canEditRowAt indexPath: IndexPath) -> Bool {
return true
}
func tableView(_ tableView: UITableView, editActionsForRowAt indexPath: IndexPath) -> [UITableViewRowAction]? {
let deleteAction = UITableViewRowAction(style: .destructive, title: "Delete") { _, _ in
self.Items.remove(at: indexPath.row)
self.tableView.deleteRows(at: [indexPath], with: .automatic)
}
deleteAction.backgroundColor = .red
return [deleteAction]
}
Code language: Swift (swift)
In this example, we filled we data an array named Items, and we removing the chosen item from the list when the user swipes left and press the delete button (or just swipes left all the way through).
If you want to use an image instead of a text, you can do it by changing the title to nil and adding the image like that (only for iOS 11 and above):
@available(iOS 11.0, *)
func tableView(_ tableView: UITableView, trailingSwipeActionsConfigurationForRowAt indexPath: IndexPath) -> UISwipeActionsConfiguration? {
let deleteAction = UIContextualAction(style: .destructive, title: nil) { _, _, complete in
self.Items.remove(at: indexPath.row)
self.tableView.deleteRows(at: [indexPath], with: .automatic)
complete(true)
}
// here set your image and background color
deleteAction.image = UIImage(named: "deletebin")
deleteAction.backgroundColor = .red
let configuration = UISwipeActionsConfiguration(actions: [deleteAction])
configuration.performsFirstActionWithFullSwipe = true
return configuration
}
Code language: Swift (swift)
You can find the final project here
If you have any questions, please feel free to leave a comment below