我使用具有不同视图的故事板,在设置视图中我有一个 UISwitch。我希望这个开关影响我所有不同视图的状态。例如:如果在设置视图中关闭了开关,那么在播放视图中将没有声音。如何保存交换机的状态?
我已经搜索过,在很多地方都说你必须为此使用 NSUserDefaults,但我不完全理解它是如何工作的。我必须在 .m/.h/appdelegate.h/m 等中编写什么样的代码?
我使用具有不同视图的故事板,在设置视图中我有一个 UISwitch。我希望这个开关影响我所有不同视图的状态。例如:如果在设置视图中关闭了开关,那么在播放视图中将没有声音。如何保存交换机的状态?
我已经搜索过,在很多地方都说你必须为此使用 NSUserDefaults,但我不完全理解它是如何工作的。我必须在 .m/.h/appdelegate.h/m 等中编写什么样的代码?
快速通读后,它似乎相当简单。
您将首先创建一个新的本地 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"];
当用户激活开关时,您只需要在用户默认值中设置偏好值(例如声音关闭)。然后获取其他视图控制器的 viewWillAppear 或 viewDidAppear 方法中的值来保证持久性。
检查苹果关于Preferences and Settings的文档。