Обновление цвета фона заголовка раздела UITableView
В моем приложении я позволяю пользователям изменять основной цвет темы, а затем элементы интерфейса обновляются соответствующим образом. У меня есть контроллер навигации, который встроен в контроллер панели вкладок.
Приложение имеет две вкладки: главный экран (на котором есть контроллер навигации) и вкладку настроек (один UIViewController). Когда пользователи меняют цвет темы со страницы настроек и возвращаются на главный экран (т. Е. Переключают вкладки), цвет фона заголовков разделов в UITableView не обновляется.
я использую tableView(_ tableView: UITableView, viewForHeaderInSection section: Int)
установить цвет фона заголовков разделов, но, по-видимому, этот метод не вызывается, когда пользователь переключается между вкладками.
Я должен использовать контроллер навигации (то есть перейти к другому представлению и вернуться на главный экран), чтобы обновить цвета заголовка раздела UITableView.
Как я могу обновить цвета, когда пользователь возвращается со вкладки настроек на главный экран?
Я использую Swift 4.1
Спасибо
1 ответ
Правильным решением для вашей задачи является использование уведомления. Когда пользователь обновляет настройку, используйте NotificationCenter
опубликовать уведомление типа "цветовая схема изменилась".
Тогда любой класс, которому необходимо выполнить действие при публикации этого уведомления, может зарегистрироваться для получения этого конкретного уведомления.
Этот контроллер представления может прослушивать уведомления и при необходимости перезагружать табличное представление. Любые другие представления, элементы управления или контроллеры, которые также должны обновлять себя на основе уведомления, могут также регистрироваться и обновляться по мере необходимости.
Это гораздо лучшее решение, чем полагаться на другие события, такие как представление снова становится видимым. Это также исключает ненужную перезагрузку таблицы каждый раз при просмотре контроллера представления, даже если пользователь не изменил никаких настроек.