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 и обработал события касания там. Вам, вероятно, придется делать все анимационные материалы самостоятельно, но я думаю, что это, вероятно, самое простое решение. Там нет "Поддерживаемого" метода для изменения кнопки удаления, я не думаю, что