首页 > 解决方案 > 切换保存用户首选项

问题描述

我正在尝试在打开开关时使用 OneSignal 发送标签,并在再次关闭时发送删除标签的请求。

@IBAction func tagGeneral(_ sender: UISwitch) {

    if (sender.isOn == true) {
        OneSignal.sendTag("General", value: "value")
        print("sendtag")
    }
    else {
      OneSignal.deleteTag("General")
        print("deletetag")
    }
 }

这是我使用的代码。似乎正在工作,但是当用户转到另一个页面时,开关会自动关闭......

我怎样才能解决这个问题?

标签: iosswift

解决方案


关于@Ryan 的评论,这是一个答案:

第一的。有很多方法可以保存用户偏好,我会用UserDefaults()| 编辑您的按钮操作代码:

@IBAction func tagGeneral(_ sender: UISwitch) {

    let userdef = UserDefaults.standard

    if (sender.isOn == true) {
        OneSignal.sendTag("General", value: "value")
        print("sendtag") 

        // user made the choice
        userdef.set(true, forKey: "sw_set")
    } else {
      OneSignal.deleteTag("General")
        print("deletetag")

        // reset 
        userdef.set(false, forKey: "sw_set")
    }
 }

通常,如果没有这个小功能,这将无法工作,请确保在您的viewDidAppear():

private func init_switch() {
     // Thanks @Vadian for the tip

    let userdef = UserDefaults.standard
    self.yourSwitch.isOn = userdef.bool(forKey: "sw_set")
}

调用它viewDidAppear()

override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)

   self.init_switch()
}

让我知道它是否有帮助。


推荐阅读