UITableView, перехват режима редактирования
Мне интересно, если можно перехватить методы по умолчанию режима "Редактировать" в UITableView. Как правило, вы получаете бесплатную кнопку "удалить", если вы проведите по экрану UITableViewCell, у которого есть связанные с ним методы делегирования. Я хотел бы изменить удаление на какой-то другой произвольный селектор. Вместо того, чтобы удалять ячейку, я просто хотел бы запустить приветственный диалог с миром. Есть что-то по возможности?
Ответы
Ответ 1
Редактирование реализуется как метод для объекта делегирования UITableViews. В вашем контроллере таблицы, независимо от того, какой контроль активирует редактирование, вызовите это:
[tableView setEditing: YES animated: YES];
Затем убедитесь, что ваш объект-делегат реализует это:
- (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];
}
}
... или более стандартное действие может быть:
[itemList removeObjectAtIndex:indexPath.row];
[table deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:YES];
Ответ 2
@JFMartin и Marco - для замены стандартной кнопки "Удалить" используйте следующий метод делегата UITableview
- (NSString *)tableView:(UITableView *)tableView titleForDeleteConfirmationButtonForRowAtIndexPath:(NSIndexPath *)indexPath
Ответ 3
В UITableViewCell с именем editAction
есть свойство, которое документируется как позволяющее вам изменить действие, используемое для вставки или удаления на отдельные ячейки (оно также использует свойство ячейки target
). Я не тестировал его, но похоже, что он может делать то, что вам нужно.
Ответ 4
Я бы выполнил подкласс UITableViewCell и обработал события касания там. Вам, вероятно, придется делать все анимационные материалы самостоятельно, но я думаю, что это, вероятно, самое простое решение. Там нет "Поддерживаемого" метода для изменения кнопки удаления, я не думаю, что