【问题标题】:How to keep user set values to UISwitch?如何将用户设置的值保留为 UISwitch?
【发布时间】:2012-06-02 16:38:22
【问题描述】:

我从界面生成器中获取了 UISwitch。那个时候它的状态是ON。运行应用程序后当我将它的位置更改为OFF并转到另一个屏幕并再次返回该屏幕时,开关状态显示ON而不是我之前设置的OFF。任何人都可以告诉我如何显示我设置的 UISwitch 位置或状态。现在,当我来到这个开关屏幕时,它总是显示为 ON。请帮我。提前致谢。

【问题讨论】:

    标签: iphone ios uiswitch


    【解决方案1】:

    当你改变值时,把它保存到 NSUserDefault,所以当你再次回到那个屏幕时,你会查看首选项值并将其设置为开关

    - (void)saveValue  {
        NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
        [preferences setBool:value forKey:@"switchOnOff"];
        [preferences synchronize];
    }
    
    - (BOOL)readValue  {
        NSUserDefaults *preferences = [NSUserDefaults standardUserDefaults];
        return [preferences boolForKey:@"switchOnOff"];
    }
    

    【讨论】:

    • 请告诉我什么是价值。那就是视图控制器变量或全局变量。请解释一下。请我是新iphone。
    【解决方案2】:

    当您更改开关状态时,将值作为整数存储在 NSUserDefaults 中,以及您的开关所在的 viewController 的 viewDidAppear 方法中。只需像这样从 NSUserDefaults 获取值来设置开关状态

    //store value to nsuserdefaulrs
        [[NSUserDefaults standardUserDefaults] setBool:switch.on forKey:@"switchStatus"];
    
    //get value from nsuserdefaulrs
    
    [switch setOn:[[NSUserDefaults standardUserDefaults] boolForKey:@"switchStatus"]];
    

    【讨论】:

      【解决方案3】:

      为 UISwitch 提供一个插座,

      @property (retain, nonatomic) IBOutlet UISwitch *sswitch;
      

      并建立连接。

      - (void)viewDidAppear:(BOOL)animated
      {
          [super viewDidAppear:animated];
      
          if( [[NSUserDefaults standardUserDefaults] boolForKey:@"switch"] )
          {
              [sswitch setOn:YES]
          }
          else
          {
              [sswitch setOn:NO]
          }
      }
      

      并且每当开关状态改变时,将值保存在NSUserDefaults

      【讨论】:

        【解决方案4】:

        您必须将值保存在
        1. 模型类
        2. NSUserDefaults
        3. 列表
        4. 文件档案。

        最好的方法是模型类。您将在 Stackoverflow 中轻松获取这些代码。

        【讨论】:

          【解决方案5】:

          如果是您在 IB 中添加的开关,您可以在此处设置其初始状态。否则,在将开关链接到 IBOutlet 后,您可以在 viewDidLoad 中添加如下内容:

          [savePass setOn:NO];

          它会将开关设置为关闭状态。您需要确保开关链接到 IBOutlet 变量。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-12-24
            • 2011-04-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多