Переключатель тактильной обратной связи вкл/выкл (Swift)

У меня есть SettingsVC ("Фото" есть 2 переключателя) и MainVC ("Код" есть функция добавления кнопок тактильной обратной связи).

Как сделать так, чтобы при выключении Switch в Setting функция переставала работать?

Настройки ВК "Фото"

@IBAction func Vib(_ sender: UIButton) {
    let generator = UIImpactFeedbackGenerator(style: .light)
    generator.impactOccurred()
}

person B2Fq    schedule 04.11.2017    source источник


Ответы (1)


Вы можете сохранить состояние переключателя в UserDefaults, а затем проверить его в своей функции.

В вашем действии переключения:

@IBAction func switchAction(sender: UISwitch) { 
    if sender.isOn {
        UserDefaults.standard.set(true, forKey: "SwitchState")
    } else {
        UserDefaults.standard.set(false, forKey: "SwitchState")
    }
}

В вашей функции MainVC

@IBAction func Vib(_ sender: UIButton) {
    guard UserDefaults.standard.bool(forKey: “SwitchState”) else { return }

    let generator = UIImpactFeedbackGenerator(style: .light)
    generator.impactOccurred()
}
person Francesco Deliro    schedule 04.11.2017
comment
Нет необходимости сравнивать логическое значение с истинным. Вы можете избавиться от этого == true - person EmilioPelaez; 04.11.2017
comment
@FrancescoDeliro моя функция всегда отключена при использовании вашего кода и всегда включена. - person B2Fq; 04.11.2017
comment
Состояние вашего коммутатора по умолчанию включено? И если вы измените значение переключателя на off, а затем на on, попробуйте распечатать значение UserDefaults Bool. - person Francesco Deliro; 04.11.2017