提问者:小点点

在Swift中两个以上的viewcontrollers之间传递数据


我的应用程序包含5个ViewControllers的TabBar控制器可以单击每个viewcontrollers中的一个按钮,该按钮将弹出另一个视图,用户可以在其中选择一个设置。按钮(被点击)应该根据每个ViewController中选择的设置来改变其背景。因此,如果用户点击VC1中的按钮并选择设置,该信息应该传播到所有其他VC中,以便按钮具有相同的背景。

我正在使用故事板,我知道这很容易在2VC之间使用segues、协议、闭包...我找不到一个合适的方法把信息传播给2个以上的风投。

我能想到的唯一解决办法就是使用userdefaults。我会保存一个关于按钮设置的信息,然后在每个VC中调用Viewwillincere,按钮的背景将根据UserDefaults中的值设置。请问有更好的解决办法吗?

编辑:

正如@cora在评论中提到的,我能够使用通知中心解决这个问题。


共1个答案

匿名用户

您有几个选项,包括:

  • 将选项卡控制器的数组传递给“弹出设置”控制器,并直接调用每个选项卡控制器中的“SettingSelected”函数。
  • 使用协议/委托模式,您可以在“弹出设置”控制器中创建委托数组。
  • 您可以使用通知中心。
  • 您可以对按钮进行子类化,并使用UIExpanage代理。

使用哪种方法将取决于许多因素,基于您需要做的事情(是否有其他“设置”?还是只有按钮背景?)

您可能希望搜索swiftusingthemes以查看各种不同的方法。