繁体   English   中英

如何使用第一视图中的按钮更改第二视图 Controller 中的图像 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM