如何使用第一视图控制器中的按钮在第二视图控制器中更改图像



我已经在我的第一视图控制器中安装了交换机,并为其分配了以下操作:-

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")
    
}

它可以在第一视图控制器中更改图像。但是,当第二视图控制器打开时,我如何才能使该开关更改图像?谢谢你的帮助!

使用通知中心

示例:在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
    }
}

最新更新