首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >开关保存用户偏好

开关保存用户偏好
EN

Stack Overflow用户
提问于 2018-11-25 18:07:23
回答 1查看 46关注 0票数 0

当开关打开时,我试图发送带有OneSignal的标记,并在再次关闭时发送删除标记的请求。

代码语言:javascript
复制
@IBAction func tagGeneral(_ sender: UISwitch) {

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

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

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-11-25 19:11:00

关于@Ryan的评论,这里有一个答复:

第一。有许多方法可以保存用户首选项,我将使用UserDefaults() \x编辑您的按钮操作代码:

代码语言:javascript
复制
@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()中调用该函数:

代码语言:javascript
复制
private func init_switch() {
     // Thanks @Vadian for the tip

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

viewDidAppear()中调用它

代码语言:javascript
复制
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(true)

   self.init_switch()
}

如果有帮助的话请告诉我。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53470388

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档