У меня есть несколько записей (ячеек) в UITableView в Swift, каждая из которых представляет «песню», которую может выбрать каждый пользователь. Названия песен, которые еще не были завершены, обозначены вопросительными знаками, а остальные отображаются нормально. Песни, завершенные пользователем, хранятся в базе данных firebase, которая сразу же читается в начале жизненного цикла UITableViewController и сохраняется в глобальном словаре, который я назвал temp_dict.
Словарь temp_dict имеет вид
Key = "02": Value = "Complete",
Ключ = "03": Значение = "Завершено",
и т.д.
Проблема в том, что загрузка данных в этот словарь происходит не сразу и при первоначальном вызове следующей функции «загрузка ячеек»:
переопределить функцию tableView (_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {}
происходит до того, как у меня есть информация из базы огня, чтобы решить, какие из них были завершены или нет.
Сейчас я нахожусь в странной ситуации, когда вопросительные знаки появляются только после того, как я прокручиваю вниз (там около 30 ячеек), а затем снова прокручиваю вверх. Я считаю, что это происходит потому, что каждая ячейка удаляется и добавляется снова, когда она удаляется и появляется на экране
Что я пробовал: я пытался использовать self.tableView.reloadData () на разных этапах, но по какой-то причине он ничего не делает.
class MainTableViewController: UITableViewController {
...
override func tableView(_ tableView: UITableView, cellForRowAt
indexPath: IndexPath) -> UITableViewCell {
let myCell = tableView.dequeueReusableCell(withIdentifier: "cell",
for: indexPath)
myCell.textLabel?.text = songs[indexPath.row].title
myCell.detailTextLabel?.text = songs[indexPath.row].artist
if (self.temp_dict[String(indexPath.row+1)] != "Complete") {
myCell.textLabel?.text = question_marks(s :
songs[indexPath.row].title)
myCell.detailTextLabel?.text = question_marks(s :
songs[indexPath.row].artist)
}
num_times_called = num_times_called + 1
return myCell
}
...
}
- Функция question_marks () просто берет строку и заменяет каждый символ знаком вопроса, чтобы показать, что уровень еще не пройден и поэтому скрыт.
** песни - это массив объектов песен, которые имеют атрибуты названия, исполнителя, номера песни и т. Д.
Результаты:
Прямо сейчас, я приветствую, когда все ячейки полностью состоят из вопросительных знаков, когда я запускаю этот view-контроллер. Когда я прокручиваю до конца и возвращаюсь назад, песни, которые были закончены, теперь внезапно отображаются как больше не вопросительные знаки (это то, что я хочу, но я хочу, чтобы это произошло немедленно).
Резюме:
Мне нужен способ для автоматической перезагрузки всех ячеек в uitableview сразу после появления определенного события.
Спасибо за любую помощь.