Ios 如何在所有视图控制器中反映UI开关的状态?

Ios 如何在所有视图控制器中反映UI开关的状态?,ios,storyboard,nsuserdefaults,uiswitch,Ios,Storyboard,Nsuserdefaults,Uiswitch,我使用不同视图的故事板,在设置视图中我有一个UISwitch。我希望此切换影响我所有不同视图的状态。例如:如果在“设置”视图中关闭开关,则“播放”视图中将不会有声音。如何保存交换机的状态 我已经搜索过了,很多地方都说你必须使用NSUserDefaults来实现这一点,但我不完全理解它是如何工作的。我必须在.m/.h/appdelegate.h/m等中编写什么样的代码?用户激活开关时,只需在用户默认设置中设置首选项值(例如,关闭声音)。然后在其他视图控制器的ViewWillDisplay或View

我使用不同视图的故事板,在设置视图中我有一个UISwitch。我希望此切换影响我所有不同视图的状态。例如:如果在“设置”视图中关闭开关,则“播放”视图中将不会有声音。如何保存交换机的状态


我已经搜索过了,很多地方都说你必须使用NSUserDefaults来实现这一点,但我不完全理解它是如何工作的。我必须在.m/.h/appdelegate.h/m等中编写什么样的代码?

用户激活开关时,只需在用户默认设置中设置首选项值(例如,关闭声音)。然后在其他视图控制器的ViewWillDisplay或ViewDidDisplay方法中获取值以保证持久性


查看苹果的文档

快速通读之后,它看起来相当简单

首先创建一个新的本地NSUserObject:

NSUserDefaults *d = [NSUserDefaults standardUserDefaults];
然后,您可以从任何视图中为其指定一个值,在这种情况下,我假设BOOL就足够了:

[d setBool:TRUE forKey:@"switchBOOL"]; 
//the key be understood by you and describes the switch
并在viewWillLoad中检索其他视图的值:

NSUserDefaults *d = [NSUserDefaults standardUserDefaults];
[d boolForKey:@"switchBOOL"];

在这个链接中,您将发现一个可能有用的教程:我应该在哪里编写这些代码行?这足以解决我的问题吗?我是编程新手,这不是我能回答的问题。我建议不要在应用程序委托中设置该值。我假设在ViewDidLoad中,视图情节提要推到第一个。