Как я могу оживить увольнение кнопки 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, тогда вы получите нужную анимацию. Я думаю, что это может быть ошибкой. Может ли кто-нибудь подтвердить это поведение?