【问题标题】:How can I have the state of a UISwitch be reflected across all my view controllers?如何让 UISwitch 的状态反映在我的所有视图控制器中?
【发布时间】:2012-07-12 12:20:29
【问题描述】:

我使用具有不同视图的故事板,在设置视图中我有一个 UISwitch。我希望这个开关影响我所有不同视图的状态。例如:如果在设置视图中关闭了开关,那么在播放视图中将没有声音。如何保存交换机的状态?

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

【问题讨论】:

标签: ios storyboard nsuserdefaults uiswitch


【解决方案1】:

您只需在用户激活开关时在用户默认设置中设置偏好值(例如关闭声音)。然后在其他视图控制器的 viewWillAppear 或 viewDidAppear 方法中获取值来保证持久性。

查看苹果关于Preferences and Settings的文档。

【讨论】:

    【解决方案2】:

    快速通读后,它似乎相当简单。

    您将首先创建一个新的本地 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 中推送到第一个。
    猜你喜欢
    • 2012-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多