Как я могу установить UIButton по умолчанию на OFF?

У меня есть приложение, в котором UISwitches по умолчанию должен быть отключен. Переключатели работают правильно, и приложение запоминает установленное состояние переключателей UIS, но по умолчанию они находятся во включенном положении (зеленый). Мне нужно, чтобы они по умолчанию были в выключенном положении (серые). Я знаю, что это будет иметь какое-то отношение к логическому значению, но как я могу реализовать это в текущем коде, который у меня есть? Код включен: спасибо!

override func viewDidLoad() {
            super.viewDidLoad()
            switchButton.isOn = UserDefaults.standard.bool(forKey: "switchState")
            switchButton2.isOn =  UserDefaults.standard.bool(forKey: "switchState")
            switchButton3.isOn =  UserDefaults.standard.bool(forKey: "switchState")
            switchButton4.isOn =  UserDefaults.standard.bool(forKey: "switchState")
            switchButton5.isOn =  UserDefaults.standard.bool(forKey: "switchState")
            switchButton6.isOn =  UserDefaults.standard.bool(forKey: "switchState")
            switchButton7.isOn =  UserDefaults.standard.bool(forKey: "switchState")
            switchButton8.isOn =  UserDefaults.standard.bool(forKey: "switchState")
            switchButton9.isOn =  UserDefaults.standard.bool(forKey: "switchState")

//@IBAction Example: 

       @IBAction func saveSwitchPressed(_ sender: UISwitch) {
            UserDefaults.standard.set(sender.isOn, forKey: "switchState")

person mattthew_james    schedule 11.05.2020    source источник
comment
С кодом, который вы показали, переключатели по умолчанию должны быть выключены при первом запуске приложения; Если вы запросите логическое значение из UserDefaults, а ключа с таким именем нет (что было бы в случае первого запуска приложения), оно вернет false, который должен отключить переключатель.   -  person Paulw11    schedule 11.05.2020
comment
Спасибо, Пол - кажется, что переключатели установлены в положение OFF при первом запуске приложения, как вы упомянули. Однако при переключении 1 тумблера в положение ON, выходе из этого контроллера представления и последующем возвращении все переключатели поворачиваются в положение ON.   -  person mattthew_james    schedule 11.05.2020
comment
Все ваши переключатели получают свое значение из одного и того же ключа UserDefaults - я предположил, что в вашем вопросе была опечатка. Если это ваш фактический код, вам нужно изменить его, чтобы использовать разные клавиши для каждого переключателя.   -  person Paulw11    schedule 11.05.2020
comment
Это действительно была проблема, теперь все работает - спасибо, ценю это! Вы хотели ответить на вопрос, чтобы я мог отметить его?   -  person mattthew_james    schedule 11.05.2020


Ответы (1)


С кодом, который вы показали, переключатели по умолчанию будут отключены при первом запуске приложения; Если вы запросите логическое значение из UserDefaults и ключа с таким именем нет (что было бы в случае первого запуска приложения), оно вернет false, что приведет к отключению.

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

person Paulw11    schedule 11.05.2020