Создайте подкласс для UIViewController
, у которого есть наблюдатель уведомлений для изменения цвета фона, и сделайте ваши контроллеры представления его подклассом. После этого поместите сообщение с уведомлением в блок didSet
вашей пользовательской переменной по умолчанию.
class CustomBgColorViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = UserPrefs.customBgColor
NotificationCenter.default.addObserver(self, selector: #selector(shouldChangeBgColor), name: .shouldChangeBgColor, object: nil)
}
@objc fileprivate func shouldChangeBgColor() {
view.backgroundColor = UserPrefs.customBgColor
}
}
extension Notification.Name {
static let shouldChangeBgColor = Notification.Name(rawValue: "shouldChangeBgColor")
}
struct UserPrefs {
static var customBgColor: UIColor! {
didSet {
[...]
NotificationCenter.default.post(name: .shouldChangeBgColor, object: nil)
}
}
}