Как правильно обновить содержимое UITableViewCell? - PullRequest
0 голосов
/ 03 июля 2018

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

Я знаю, что ячейки используются повторно, и поэтому я хочу знать, как «избежать» этого эффекта и как правильно обновлять содержимое ячеек. Я уже пытался вызвать TableView.ReloadData(), что, кажется, решает проблему, но ячейки появляются в совершенно ином порядке, который выглядит не очень хорошо.

Ответы [ 3 ]

0 голосов
/ 03 июля 2018

Для этого вы должны создать массив, который будет служить источником данных для ваших меток. Когда вы изменяете текст для определенной метки, вы должны обновить массив. Точное местоположение обновления можно получить из свойства indexPath метода cellForRowAt. Каждый раз при прокрутке вверх и вниз вызывается метод cellForRowAt. Просто используйте что-то вроде

label.text = array[indexPath.row]
0 голосов
/ 03 июля 2018

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

0 голосов
/ 03 июля 2018

Самый простой подход - обновить данные, из которых черпает UITableView (т. Е. Массив данных, из которого вы заполняете каждую ячейку, был обновлен, чтобы отразить изменение текста), а затем перезагрузить определенную ячейку UITableView:

let indexPath = IndexPath(row: 0, section: 0)
tableView.reloadRows(at: [indexPath], with: .automatic)
...