保存按钮状态
问题描述:
我开始创建自己的项目中最喜欢的button
,我需要一些帮助......保存按钮状态
我创建了一个button
和已编程它来打开image
时tapped
就在这里:
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;
}
它的工作完美,但现在如果我退出应用程序button
不保存状态,如果它的selected
或没有。我听说你可以NSUserDefault
实现这一点,但我不知道如何实现这个,所以我很想得到一些帮助吧:)
我使用雨燕2.3和Xcode中8
谢谢。
答
这是相当简单。在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
答
为SWIFT 3这将是未来:
//save value
UserDefaults.standard.set(selected, forKey: "lButtonSelected")
//then on next launch restore it
let selected = UserDefaults.standard.value(forKey: "lButtonSelected")
答
要保存NSUserDefaults
值:
UserDefaults.standard.set(selected, forKey: "buttonStatus")
UserDefaults.standard.synchronize()
,并从NSUserDefaults
检索值:
let buttonStatus = UserDefaults.standard.value(forKey: "buttonStatus")
您的问题不是特定于iPhone或Xcode。请不要添加不相关的标签。您应该阅读这些标签的描述,以了解何时正确使用它们。 – rmaddy