didSet не соблюдает статические переменные

#ios #swift #static-variables #didset

#iOS #быстрый #статические переменные #дидсет

Вопрос:

Я пытаюсь использовать didSet статическое наблюдаемое свойство, но оно не выполняет оператор if-else в didSet . Вот этот код:

     static var isCorrect: Bool = false {
    didSet {
        if isCorrect {
            ViewController.theViewController.checkbox.image = UIImage(named: "tick")
        } else {
            ViewController.theViewController.checkbox.image = nil
        }
    }
}

static var theViewController = ViewController()
 

Все это находится в классе под названием ViewController . Я изменяю isCorrect переменную в другом классе контроллера представления и отклоняю ее после этого, но, похоже, это не работает.

Используемое checkbox там свойство является переменной типа UIImageView .

Я делаю что-то не так? Если да, то каков же правильный путь?

Комментарии:

1. Используете ли вы раскадровку для своего контроллера представления? Если да, то вы используете неправильный экземпляр вашего контроллера представления в didSet

2. Да, действительно.

3. Почему свойство должно быть статичным? Если бы это было не так, вы, вероятно, могли бы сделать self.checkbox.image = ... в didSet

4. Потому что я меняю это в другом классе контроллера представления.

5. Теперь это работает, оказывается, что переменная ответа была жестко запрограммирована.