[英]move data to another view controller, but the 2nd view controller load first before 1st view controller
[英]How to Change an image in 2nd View Controller using a Button in 1st View Controller
我已经在我的 First View Controller 中设置了开关,并为其分配了以下操作:-
class ThirdViewController: UIViewController {
@IBOutlet weak var Image: UIImageView!
@IBOutlet weak var playerNum1Button: UIButton!
@IBOutlet weak var toggleSwitch: UISwitch!
override func viewDidLoad() {
super.viewDidLoad()
self.toggleSwitch.setOn(UserDefaults.standard.bool(forKey: "toggleState"), animated: true)
}
@IBAction func numPlayers1(_ sender: Any) {
performSegue(withIdentifier: "3to8segue", sender: self)
}
IBAction func toggleSwitch(_ sender: UISwitch) {
if (toggleSwitch.isOn == true) {
Image.image = UIImage(named: "Night")
}
else {
Image.image = UIImage(named: "background")
}
UserDefaults.standard.set(sender.isOn, forKey: "toggleState")
}
可以在第一视图 Controller 中更改图像。 但是,当它打开时,我怎样才能获得该开关以更改第二视图 controller 中的图像? 谢谢您的帮助!
使用通知中心
示例:在 FirstViewController 中:
@IBAction func onPressButton(_ sender: UIButton) {
UserDefaults.standard.set(sender.isSelected, forKey: "pressedButton")
NotificationCenter.default.post(name: "changeImageBackground", object: nil)
}
在 SecondViewController 中:
NotificationCenter.default.addObserver(target: self, selector: #selector(didChangeImageBackground), name: "changeImageBackground", object: nil)
@objc func didChangeImageBackground() {
let changed = UserDefaults.standard.bool(forKey: "pressedButton")
if changed {
// image when pressed
} else {
// image when haven't pressed
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.