Я перегрузил метод:Изменение управления редактированием UITableViewCell
- (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
. Это можно увидеть, отредактировав контакт, а затем набрав номер в последнем поле телефона (т. Е. Добавив новый номер телефона): текущая строка получает минус-кнопку, а новая строка добавляется под нее.
Всегда находите лучшее решение для этого? Это анимирующий материал слева, как знак, так и, в моем случае, (x) для очистки содержимого текстового поля в ячейке. Плюс запуск prepareForReuse на что-то в таблице просто кажется страшным. – smparkes
cf http://stackoverflow.com/questions/5622431/update-editing-style-of-uitableviewcell-depending-on-contents – smparkes