第二个视图控制器上的开关更改第一个视图控制器的背景

问题描述:

我正在制作一个具有2个视图控制器的应用程序,我希望能够通过第二个视图控制器上的开关更改第一个视图控制器的背景和其他功能。我对编程相当陌生,不知道它是如何完成的。我设法改变了第二个视图控制器上的元素,但无法弄清楚如何改变它们。这是我对第二个视图控制器的代码。我需要更改什么,以便第一个视图控制器背景也发生变化?第二个视图控制器上的开关更改第一个视图控制器的背景

// set function for changing to dark mode 
func updateMySwitchState(){ 
    if darkModeSwitch.isOn { 
     self.view.backgroundColor = UIColor.black 
     removeAds.textColor = UIColor.white 
     aboutText.textColor = UIColor.white 
     about.textColor = UIColor.white 
     backButton.setImage(UIImage(named: "backinvert-40"), for: .normal) 

    } 
    else { 
     self.view.backgroundColor = UIColor.white 
     removeAds.textColor = UIColor.black 
     aboutText.textColor = UIColor.black 
     about.textColor = UIColor.black 
     backButton.setImage(UIImage(named: "back-40"), for: .normal) 
} 
} 

我通过上面的函数到IBAction为交换机

+2

你可以用'delegate'在第一个viewController中从第二个viewController中改变东西 –

UIView.appearance().backgroundColor = UIColor.blue 

您可以使用此功能,背景色设置为所有viewcontrollers

要设置的UILabel文本全局颜色你可以这样做

UILabel.appearance().textColor = UIColor.red 

你可以通过几种方法做到这一点。

1.you can use Delegation. 
2.you can use Observer. 
3.you can use Unwind segue. 
4.you can also use callback method. 

有几种方法可以做到这一点。

1 - 将指针指向您的第一个视图控制器到第二个,当您调用它时,您可以指向该视图控制器。

2 - 从第二视图控制器使用委托和执行委托方法在第一

3 - 使用NSNotification在第二视图控制器,并观察在第一

4为该通知名修改 - 如果你有这两个控制器之间的转换,您可以设置在过渡期间所需要的

有可能的,也有更多的方式来做到这一点,但我敢肯定的是,上面提到的方法之一,将有助于你