Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 保存按钮状态_Ios_Swift_Button - Fatal编程技术网

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”。他们只是重命名了类并更改了一些方法。