我在我的第一个 View Controller 中包含了一个开关,并使用以下代码来实现它的操作:-
class FirstViewController: UIViewController {
@IBOutlet weak var Image: UIImageView!
@IBOutlet weak var playerNum1Button: UIButton!
@IBOutlet weak var toggleSwitch: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func numPlayers1(_ sender: Any) {
performSegue(withIdentifier: "3to8segue", sender: self)
}
@IBAction func toggleSwitch(_ sender: Any) {
if (toggleSwitch.isOn == true) {
Image.image = UIImage(named: "Image1")
}
else {
Image.image = UIImage(named: "Image2")
}
}
当我打开第一个 View Controller 中的开关时,它工作得很好。但是,在我转到第二个 View Controller 并再次返回到第一个 View Controller 后,开关会自动关闭。有关如何解决此问题的任何帮助?感谢你的帮助!
最佳答案
如果您的 Switch 切换将取决于 API 响应请询问“toggleState” bool 值的额外键,然后在 API 响应中设置其状态。
否则将“toggleState”键保存在 UserDefault 中,如下所示:-
@IBAction func toggleSwitch(_ sender: UISwitch) {
if (toggleSwitch.isOn == true) {
Image.image = UIImage(named: "Image1")
}
else {
Image.image = UIImage(named: "Image2")
}
UserDefaults.standard.set(sender.isOn, forKey: "toggleState")
}
然后在 ViewController 的“ViewWillAppear”方法中添加以下代码override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.toggleSwitch.setOn(UserDefaults.standard.bool(forKey: "toggleState"), animated: true)
}
}
关于ios - 使用 Swift 离开 View Controller 后自动关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63049329/