Ios 保存按钮状态
我开始为我的项目创建一个收藏夹按钮,我需要一些帮助 我已经创建了一个按钮,并将其编程为在点击此处时切换图像:Ios 保存按钮状态,ios,swift,button,Ios,Swift,Button,我开始为我的项目创建一个收藏夹按钮,我需要一些帮助 我已经创建了一个按钮,并将其编程为在点击此处时切换图像: override func viewDidLoad() { super.viewDidLoad() //create a new button let Favoritebutton: UIButton = UIButton(type: UIButtonType.Custom) //set image for button
override func viewDidLoad() {
super.viewDidLoad()
//create a new button
let Favoritebutton: UIButton = UIButton(type: UIButtonType.Custom)
//set image for button
Favoritebutton.setImage(UIImage(named: "EmptyHeart.png"), forState: UIControlState.Normal)
Favoritebutton.setImage(UIImage(named: "FilledHeart.png"), forState: UIControlState.Selected)
//add function for button
Favoritebutton.addTarget(self, action: #selector(self.button(_:)), forControlEvents: .TouchUpInside)
//set frame
Favoritebutton.frame = CGRectMake(90, 90, 35, 35)
let barButton = UIBarButtonItem(customView: Favoritebutton)
//assign button to navigationbar
self.navigationItem.rightBarButtonItem = barButton
}
@IBAction func button(sender: UIButton) {
sender.selected = !sender.selected;
}
它工作得很好,但从现在起,如果我退出应用程序,无论是否选中,按钮都不会保存状态。我听说您可以通过NSUserDefault实现这一点,但我不知道如何实现这一点,因此我希望获得一些帮助:
我使用的是Swift 2.3和Xcode 8
谢谢。对于swift 3,它将是下一个:
//save value
UserDefaults.standard.set(selected, forKey: "lButtonSelected")
//then on next launch restore it
let selected = UserDefaults.standard.value(forKey: "lButtonSelected")
对于swift 3,它将是下一个:
//save value
UserDefaults.standard.set(selected, forKey: "lButtonSelected")
//then on next launch restore it
let selected = UserDefaults.standard.value(forKey: "lButtonSelected")
要在NSUserDefaults中保存该值,请执行以下操作:
要从NSUserDefaults检索值,请执行以下操作:
要在NSUserDefaults中保存该值,请执行以下操作:
要从NSUserDefaults检索值,请执行以下操作:
这很容易。在UserDefaults中,您可以毫无问题地存储布尔值 在viewDidLoad中,您可以像这样检查密钥的值
let defaults = UserDefaults.standard
let buttonIsSelected = defaults.bool(forKey: "keyForIsButtonSelected") // If no value exists for this key then false is returned
button.selected = buttonIsSelected
在按钮功能中,请记住保存您的状态
sender.selected = !sender.selected
let defaults = UserDefaults.standard
defaults.set(sender.selected, forKey: "keyForIsButtonSelected")
defaults.synchronize() // Save your defaults, can also move this part of code to applicationWillTerminate
对于Swift 2.3,请使用此选项
let defaults = NSUserDefaults.standardUserDefaults()
let buttonIsSelected = defaults.boolForKey("keyForIsButtonSelected") // If no value exists for this key then false is returned
button.selected = buttonIsSelected
内部按钮功能
sender.selected = !sender.selected
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setBool(sender.selected, forKey: "keyForIsButtonSelected")
defaults.synchronize() // Save your defaults, can also move this part of code to applicationWillTerminate
这很容易。在UserDefaults中,您可以毫无问题地存储布尔值 在viewDidLoad中,您可以像这样检查密钥的值
let defaults = UserDefaults.standard
let buttonIsSelected = defaults.bool(forKey: "keyForIsButtonSelected") // If no value exists for this key then false is returned
button.selected = buttonIsSelected
在按钮功能中,请记住保存您的状态
sender.selected = !sender.selected
let defaults = UserDefaults.standard
defaults.set(sender.selected, forKey: "keyForIsButtonSelected")
defaults.synchronize() // Save your defaults, can also move this part of code to applicationWillTerminate
对于Swift 2.3,请使用此选项
let defaults = NSUserDefaults.standardUserDefaults()
let buttonIsSelected = defaults.boolForKey("keyForIsButtonSelected") // If no value exists for this key then false is returned
button.selected = buttonIsSelected
内部按钮功能
sender.selected = !sender.selected
let defaults = NSUserDefaults.standardUserDefaults()
defaults.setBool(sender.selected, forKey: "keyForIsButtonSelected")
defaults.synchronize() // Save your defaults, can also move this part of code to applicationWillTerminate
您的问题并非针对iPhone或Xcode。请不要添加不相关的标签。您应该阅读这些标签的描述,以了解何时正确使用它们。您的问题并不特定于iPhone或Xcode。请不要添加不相关的标签。您应该阅读这些标记的说明,以了解何时正确使用它们。不要不必要地调用synchronize。@rmaddy true,当应用程序进入后台时,他可以调用synchronize。这是唯一一次有人应该调用synchronize。不要不必要地调用synchronize。@rmaddy true,他可以在应用程序进入后台时调用synchronize这是唯一一次任何人都应该调用synchronize。不要不必要地调用synchronize。可以在应用程序上调用WillTerminate,但如果用户退出应用程序,并且在更改按钮后代码中没有同步,则默认值将不会更新并保存。我收到了这个错误:使用未解析标识符“UserDefaults”。顺便说一下,我使用的是Swift 2.3@Adamsor@Adamsor仅在ApplicationIdentinterBackground中调用同步。就这样。其他地方不需要。@新手提问Ohh,然后使用“NSUserDefaults.standardUserDefaults.BoolWorkeyForIsButtonSelected”和“NSUserDefaults.standardUserDefaults.setBoolbutton.selected,forKey:keyForIsButtonSelected”。他们只是重命名了类并更改了一些方法。不要不必要地调用synchronize。可以在applicationWillTerminate上调用,但如果用户退出应用程序,并且在更改按钮后代码中没有同步,则默认值将不会更新并保存。我收到了这个错误:使用未解析标识符“UserDefaults”。顺便说一下,我使用的是Swift 2.3@Adamsor@Adamsor仅在ApplicationIdentinterBackground中调用同步。就这样。其他地方不需要。@新手提问Ohh,然后使用“NSUserDefaults.standardUserDefaults.BoolWorkeyForIsButtonSelected”和“NSUserDefaults.standardUserDefaults.setBoolbutton.selected,forKey:keyForIsButtonSelected”。他们只是重命名了类并更改了一些方法。