Ios 如何使用Userdefaults保存和获取按钮启用和禁用值
我想在userdefault中保存按钮启用和禁用值。我写了下面的代码,但什么也没发生。请告诉我如何保存和获取按钮启用和禁用值 我想,当按下iAction按钮时,它应该禁用,当关闭应用程序并重新打开应用程序时,它应该保存按钮的禁用状态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
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的位置。您不需要再同步了