当开关打开时,我试图发送带有OneSignal的标记,并在再次关闭时发送删除标记的请求。
@IBAction func tagGeneral(_ sender: UISwitch) {
if (sender.isOn == true) {
OneSignal.sendTag("General", value: "value")
print("sendtag")
}
else {
OneSignal.deleteTag("General")
print("deletetag")
}
}这是我用来做它的代码。似乎正在工作,但当用户转到另一个页面时,开关会自动关闭.
我怎么才能解决这个问题?
发布于 2018-11-25 19:11:00
关于@Ryan的评论,这里有一个答复:
第一。有许多方法可以保存用户首选项,我将使用UserDefaults() \x编辑您的按钮操作代码:
@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()
}如果有帮助的话请告诉我。
https://stackoverflow.com/questions/53470388
复制相似问题