Как мы используем невидимые клетки в uitableview swift? - PullRequest
0 голосов
/ 30 мая 2019

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

Я использую tableview.cellforRowAt(IndexPath) в нашем коде, пожалуйста, разрешите мою проблему

1 Ответ

0 голосов
/ 30 мая 2019

UITableViewCell можно использовать повторно, вы не можете обновить интерфейс ячеек, которые не отображаются (видимы), они просто не существуют или используются повторно для другой ячейки.

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

Итак, это не проблема, но по замыслу.

Кстати, вы используете правильный метод tableView.cellForRow(at: IndexPath), он вернет ячейку, только если она отображается.

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

struct CellData {
    var progress: Float
}

var dataSource: [CellData]

Теперь, когда вам нужно обновить прогресс ячеек, вы можете просто обновить dataSource, вот так

dataSource[index].progress = value

Затем вы вызываете либо UITableView.realoadData(), чтобы обновить интерфейс всех видимых ячеек, либо вы можете обновить только этот конкретный index, например:

if let cell = self.tableView.cellForRow(at: IndexPath(row: index, section: 0)) as? CustomCell {
    cell.progressView.setProgress(value, animated: true)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...