Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/95.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 如何使用Userdefaults保存和获取按钮启用和禁用值_Ios_Swift_Xcode_Nsuserdefaults - Fatal编程技术网

Ios 如何使用Userdefaults保存和获取按钮启用和禁用值

Ios 如何使用Userdefaults保存和获取按钮启用和禁用值,ios,swift,xcode,nsuserdefaults,Ios,Swift,Xcode,Nsuserdefaults,我想在userdefault中保存按钮启用和禁用值。我写了下面的代码,但什么也没发生。请告诉我如何保存和获取按钮启用和禁用值 我想,当按下iAction按钮时,它应该禁用,当关闭应用程序并重新打开应用程序时,它应该保存按钮的禁用状态 import UIKit class ViewController: UIViewController { @IBOutlet weak var btn2: UIButton! @IBOutlet weak var btn1: UIButton! overrid

我想在userdefault中保存按钮启用和禁用值。我写了下面的代码,但什么也没发生。请告诉我如何保存和获取按钮启用和禁用值

我想,当按下iAction按钮时,它应该禁用,当关闭应用程序并重新打开应用程序时,它应该保存按钮的禁用状态

import UIKit

class ViewController: UIViewController {

@IBOutlet weak var btn2: UIButton!
@IBOutlet weak var btn1: UIButton!
override func viewDidLoad() {
    super.viewDidLoad()

//        let def = UserDefaults.standard.bool(forKey: "val")
//        btn1.isEnabled = def

}

override func viewWillAppear(_ animated: Bool) {

    let def = UserDefaults.standard.bool(forKey: "val")
    print(def)
        //btn1.isEnabled = def

}

@IBAction func btn1Pressed(_ sender: UIButton) {
     let def = UserDefaults.standard.bool(forKey: "val")
    print("Button one pressed")

    let otherAlert = UIAlertController(title: "Button 1!!", message: "Here is button one.", preferredStyle: UIAlertControllerStyle.alert)

    let okaction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) { (UIAlertAction) in

        print("OK pressed")
        self.btn1.isEnabled = false
         UserDefaults.standard.set(self.btn1.isEnabled, forKey: "val")
    }
    let dismiss = UIAlertAction(title: "No", style: UIAlertActionStyle.cancel) { (UIAlertAction) in
    self.btn1.isEnabled = true
        UserDefaults.standard.set(self.btn1.isEnabled, forKey: "val")

        print("No pressed")

    }
    otherAlert.addAction(dismiss)
    otherAlert.addAction(okaction)

    present(otherAlert, animated: true, completion: nil)
    let def1 = UserDefaults.standard.bool(forKey: "val")
    btn1.isEnabled = def1
}


@IBAction func btn2Pressed(_ sender: UIButton) {

    print("Button Two pressed")
}

}

不要保存
self.btn1.isEnabled
而是保存应用于该文件的值。你不能直接这么做吗

override func viewDidLoad() {
    super.viewDidLoad()
        // You need to check if key is present or else you will get false as default value and your button will disabled only
        if isKeyPresentInUserDefaults(key: "val") {
          let def = UserDefaults.standard.bool(forKey: "val")
          btn1.isEnabled = def
        }
}

// Check key is present or not
func isKeyPresentInUserDefaults(key: String) -> Bool {
   return UserDefaults.standard.object(forKey: key) != nil
}

@IBAction func btn1Pressed(_ sender: UIButton) {

    let defaults = UserDefaults.standard

    defaults.set(false, forKey: "val")
    print("Button one pressed")

    let otherAlert = UIAlertController(title: "Button 1!!", message: "Here is button one.", preferredStyle: UIAlertControllerStyle.alert)

    let okaction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) { (UIAlertAction) in
        print("OK pressed")
        self.btn1.isEnabled = false
        defaults.set(false, forKey: "val")
    }

    let dismiss = UIAlertAction(title: "No", style: UIAlertActionStyle.cancel) { (UIAlertAction) in
        self.btn1.isEnabled = true
        defaults.set(true, forKey: "val")
        print("No pressed")

    }
    otherAlert.addAction(dismiss)
    otherAlert.addAction(okaction)

    present(otherAlert, animated: true, completion: nil)

    // No need of these 2 lines
    let def1 = defaults.bool(forKey: "val")
    btn1.isEnabled = def1
}

然后我们如何获取它,以及我们在哪里获取这个值我在上面的代码中尝试过,这也不起作用。请在禁用按钮后查看此信息,不应出现保存和获取值警报show@UmairAhmad告诉我这是不是你想要的。如果您第一次单击该按钮,则应禁用该按钮,如果您关闭并重新打开应用程序,则应仅禁用该按钮。我说得对吗?兄弟,它不起作用。。你能为它写一个抓取语句吗?你能测试它吗?请看这个。。。我通过这种方式获取override func VIEWWILLEXPEND(uu动画:Bool){let def=UserDefaults.standard.Bool(forKey:val”)}我看不到在设置后同步UserDefaults的位置。您不需要再同步了