在 Xcode 中返回视图控制器后保存 UIButton 的背景图像



我对我的按钮进行了编程,每当用户点击按钮时,它会为该特定按钮分配一个背景图像,而所有其他按钮上的背景图像都变为零。现在,我正在纠结如何保存用户在使用用户默认值退出UICoontroller之前点击的特定UIButton的背景图像。因此,当用户返回时,它应该在特定的UIButton上显示背景图像。这是相同的代码:-

@IBAction func Button1(_ sender: Any) {

button1.setBackgroundImage(image, for: .normal)

button2.setBackgroundImage(nil, for: .normal)
}
@IBAction func Button2(_ sender: Any) {

button2.setBackgroundImage(image, for: .normal)

button1.setBackgroundImage(nil, for: .normal)
}

我将感谢你的帮助!谢谢

您的问题基本上是如何保存此视图控制器的状态UserDefaults确实可以满足您的需要。

您的状态有两个部分:一个-哪个按钮有图像背景,两个-图像名称(除非这个是常量(。

当View Controller加载时,您将希望从UserDefaults:重新创建您的状态

  1. 获取图像名称
  2. 获取哪个按钮具有图像背景
  3. 设置该按钮的背景<-为了实现这一点,您需要某种确定性映射,例如,您可以使用UIButton的tag字段

因此,代码片段:

// assign tag values (can be done from Storyboard UI as well)
button1.tag = 1
button2.tag = 2
// saving particular button tag to UserDefaults on tap:
@IBAction func Button1(_ sender: UIButton) {
UserDefaults.standard.set(sender.tag, forKey: "selected_button_tag")
}
// get "selected_button_tag" on viewDidLoad or smthn:
let tag = UserDefaults.standard.integer(forKey: "selected_button_tag")
if tag > 0 {
// ... find the button with this tag value and set background. 
// E.g. you can have a dictionary or some other collection with your UIButton objects for easier access.
}

据我所知,你只需要保存图像的名称,并将其用于按钮背景,这样你就可以使用

let defaults = UserDefaults.standard
defaults.set("niceImageFileName", forKey: "zeytin")
let savedName = defaults.string(forKey: "zeytin")
yourButton.setImage(UIImage(named: savedName), for: .normal)

最新更新