Swift: изменение состояния переключателя UIS при нажатии кнопки с тем же тегом

У меня есть эта функция, которая получает UISwitch с тем же значением тега, что и кнопка, которая вызывает функцию, и затем она предназначена для изменения состояния UISwitch на true:

let tagToSwitch = self.view.viewWithTag(sender.tag) as? UISwitch
tagToSwitch?.setOn(true, animated: true)

Однако это не работает, и если я изменю tagToSwitch! приложение вылетает и возвращает ошибку 'fatal error: unexpectedly found nil while unwrapping an Optional value' хотя я не уверен, где я ошибаюсь, так как, когда я печатаю значение sender.tag перед этим, оно печатает правильное значение.

Любая помощь приветствуется.

1 ответ

Решение

viewWithTag может не получить представление, которое вы хотите. Вместо этого вы можете попробовать цикл for.

for view in self.view.subviews {
    if let tagToSwitch = view as? UISwitch {
        if tagToSwitch.tag == sender.tag {
            tagToSwitch.setOn(true, animated: true)
        }
    }
}
Другие вопросы по тегам