Держите метку времени обновленной в UITableView - PullRequest
0 голосов
/ 11 ноября 2019

У меня есть UIViewController, который имеет UITableView, который представляет комментарии, извлеченные из живой базы данных Firebase.

Каждый раз, когда приходит новый комментарий, я вызываю

tableView.beginUpdates()
tableView.insertRows(at: [IndexPath(row: self.liveComments.count-1, section: 0)], with: .fade)
tableView.endUpdates()

, чтобы вставить последний комментарийс исчезающей анимацией. Это прекрасно работает.

Однако в каждой ячейке есть метка, показывающая, когда она была опубликована, в виде «секунд, минут или часов назад». Проблема заключается в том, что при поступлении большого количества комментариев метка возраста не обновляется, поскольку существующие ячейки не обновляются, и пользователю кажется, что возраст комментария неправильный.

Я пытался позвонить

tableView.reloadRows(at: self.tableView.indexPathsForVisibleRows ?? [], with: .none)

внутри моего обновленного блока tableView, но анимация все испорчена, так как все видимые ячейки кажутся анимированными странным, «нервным» способом.

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

if let visibleCells = self.tableView.visibleCells as? [LiveCommentTableViewCell] {
    visibleCells.forEach { cell in
    cell.updateCommentAgeLabel()
}

Как можноЯ подхожу к этому? Мне просто нужно перезагрузить все видимые ячейки без анимации и последнюю ячейку с постепенным исчезновением анимации. Спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...