I'm curious if it's possible to intercept the default methods of 'Edit' mode on a UITableView. Typically you get a free 'delete' button if you side swipe a UITableViewCell that has delegate methods associated with it. I'd like to change the delete to some other, arbitrary selector. Instead of deleting the cell, I'd just like to run a hello world alert dialogue. Is something to this extent possible?
4 Answers
Editing is implemented as a method on your UITableView’s delegate object. In your table controller, have whatever control activates editing call this:
[tableView setEditing: YES animated: YES];
Then, make sure that your delegate object implements this:
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
if (editingStyle == UITableViewCellEditingStyleDelete) {
UIAlertView *alert = [[UIAlertView alloc]
initWithTitle: @"Delete"
message: @"Do you really want to delete “George W. Bush”?"
delegate: self
cancelButtonTitle: @"Cancel"
otherButtonTitles: @"Of course!", nil];
}
}
…or a more standard action might be:
[itemList removeObjectAtIndex:indexPath.row];
[table deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];

- 457
- 5
- 5
-
1Problem is what to do when the user clicks "cancel." The only thing that I've done that looks half okay is `reloadRowsAtIndexPaths` to get rid of the delete button. – Dan Rosenstark Jul 28 '10 at 02:41
-
1+1 for message:@"Do you really want to delete “George W. Bush”?" ;) – Devarshi Oct 25 '11 at 13:50
There is a property on UITableViewCell called editAction
which is documented as letting you change the action used for insertion or deletion on individual cells (it uses the cell's target
property too). I haven't tested it, but this sounds like it might do what you want.

- 182,031
- 33
- 381
- 347
I would implement a subclass of UITableViewCell and handle touch events in there. You would likely have to do all the animation stuff yourself, but I think it's probably the easiest solution. There's not a "Supported" method for changing the delete button, I don't think

- 39,590
- 19
- 103
- 156