Пользовательская ячейка не перезагружает пользовательский интерфейс после вызова таблицы reloadData - PullRequest
0 голосов
/ 12 июня 2018

У меня есть tableView с пользовательской ячейкой.В ячейке у меня есть UILabel

    lazy var profileInfo: UILabel = {
    let label = UILabel()
    label.numberOfLines = 0
    label.textColor = turnOn ? .white : .black
    return label
}()

У меня есть логическое значение UserDefaults с именем turnOn, чтобы определить цвет метки.В моем контроллере tableView у меня есть кнопка для изменения логического значения, а затем вызывается tableView.reloadData ().Тем не менее, моя метка не меняет цвет при запуске tableView.reloadData ().Я должен выйти из приложения и запустить его снова, чтобы увидеть эффект.Мой вопрос, является ли tableView перезагрузить данные правильный метод для использования?и есть ли способ справиться с этой ситуацией?Спасибо!

1 Ответ

0 голосов
/ 12 июня 2018

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

Если вы уберете код для установки label.textColor вне ленивого блока, то он должен работать правильно.Вызовите функцию configureCell из метода cellForRow и выполните там часть конфигурации.

func configureCell() {
  label.textColor = turnOn ? .white : .black
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...