Я переопределил метод:
- (UITableViewCellEditingStyle)tableView:(UITableView *)tableView
editingStyleForRowAtIndexPath:(NSIndexPath *)indexPath
, чтобы кнопка плюса появилась рядом с ячейкой.После того, как пользователь отредактирует содержимое ячейки, я хочу изменить ее с кнопки «плюс» на кнопку «минус».Логика уже написана в этом методе.Проблема в том, что хотя этот метод вызывается и возвращает правильное значение, он не обновляет кнопку.
Использование:
[myViewCell setNeedsLayout];
... не вызывает [myTableView tableView:editngStyleForRowatIndexPath:]
для запуска.
Вызов
[tableView reloadRowsAtIndexPaths: ... withRowAnimation:UITableViewRowAnimationNone];
... делает что-то странное ... это вызывает [myTableView tableView:editngStyleForRowatIndexPath:]
, который вызывается во всех строках, КРОМЕ ТОГО, что я посылаю в reloadRowsAtIndexPaths
параметр.
Несмотря на это, поскольку я вставляю строку, метод вызывается во всех моих строках, включая ту, которую я хочу изменить.Я проверил, что он возвращает UITableViewCellEditingStyleDelete
.Даже если он возвращает правильное значение, он все равно показывает значок плюс вместо значка минус.
Вызов [tableview reloaddata]
не работает.
Существует свойство editingStyle
наUITableViewCell
, который, кажется, решил бы мои проблемы, но только для чтения.Как если бы метод tableView:editingStyleForRowAtIndexPath:
установил editingStyle
, это никогда не может быть изменено.Почему же тогда этот метод будет вызываться непрерывно, когда строки прокручиваются в представление?
Как изменить управление редактированием UITableViewCell?
Вы заметите, что в приложении «Контакты» Appleтакое же точное поведение, за исключением того, что оно переходит от UITableViewCellEditingStyleNone
вместо UITableViewCellEditingStyleInsert
.Это можно увидеть, отредактировав контакт, а затем набрав номер в последнем поле телефона (т.е. добавив новый номер телефона): текущая строка получает кнопку минус, а под ней добавляется новая строка.