Как я могу оживить увольнение кнопки UITableView для удаления?

Как и в приложении iPhone Mail, я бы хотел, чтобы кнопка "Удалить" отображалась при просмотре редактируемой ячейки таблицы справа налево, чтобы оживить ее при ее удалении (путем нажатия в другом месте, кроме кнопки "Удалить" на UITableViewCell). Вместо этого моя кнопка "Удалить" сразу исчезает, когда ее отклоняют.

Чтобы вызвать кнопку "Удалить" при первом открытии ячейки таблицы, я добавил (к классу, который является UITableViewDataSource и UITableViewDelegate для UITableView):

// Override to support conditional editing of the table view.
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath {
    return YES;
}

// Override to support editing the table view.
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
    if (editingStyle == UITableViewCellEditingStyleDelete) {
        //add code here for when you hit delete
    }       
}

Есть ли что-то, что я могу добавить к этому, которое будет обрабатывать анимацию кнопки "Удалить" , когда она будет уволена? Спасибо!

Ответы

Ответ 1

У меня была та же проблема, теперь выяснилось, что есть некоторая проблема, когда у нас есть пустой cell.textLabel.text. Попробуйте добавить

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath:
{
    {...} // omitted code
    cell.textLabel.text = @"whatever";          
    cell.textLabel.hidden = YES;
}

С помощью этой кнопки проведите пальцем по экрану, но ПОЧЕМУ? PS: протестирован с пользовательскими ячейками и построен i.n

Ответ 2

Вам не нужно вручную анимировать увольнение, он работает так же, как и вызывать его, поэтому не уверен, почему он ведет себя по-другому в вашем приложении.

Используете ли вы пользовательские ячейки случайно? Чтобы подумать, попробуйте, измените метод shouldIndentWhileEditingRowAtIndexPath:, чтобы вернуть NO и посмотреть, не изменит ли он что-либо. Единственное, что я могу придумать, это то, что ваш отпечаток содержимого вмешивается в область кнопки удаления таким образом, что анимация не может быть выполнена или не ведет себя так, как должна.

- (BOOL)tableView:(UITableView *)tableView shouldIndentWhileEditingRowAtIndexPath:(NSIndexPath *)indexPath { return NO; }

Ответ 3

Я тоже столкнулся с этой проблемой. У меня есть серия tableViews, и я заметил, что некоторые из них имеют правильное увольнение, а другие нет.

Кажется, что разница в UITableViewCellAccessory. Если для этого параметра установлено значение, отличное от UITableViewCellAccessoryNone, тогда вы получите нужную анимацию. Я думаю, что это может быть ошибкой. Может ли кто-нибудь подтвердить это поведение?