Как правильно обновить содержимое UITableViewCell?

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

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

3 ответа

Решение

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

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

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

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

label.text = array[indexPath.row]
Другие вопросы по тегам