【问题标题】:How to save checkbox value check/uncheck to NSUserDefault [closed]如何将复选框值选中/取消选中保存到 NSUserDefault [关闭]
【发布时间】:2012-09-11 14:25:26
【问题描述】:

我有复选框记住密码(用于登录表单)。我想当我检查时记住它保存并运行它显示复选框检查。如果我取消选中它运行并显示复选框取消选中。请分享给我。提前感谢

【问题讨论】:

    标签: objective-c xcode cocoa


    【解决方案1】:

    将复选框值绑定到共享用户默认控制器上的某个键:

    (您没有具体说明这是 iOS 还是 Mac,但由于 iOS 中没有标准的复选框控件,我假设是后者。)

    【讨论】:

    • 那么这是 Cocoa 绑定的完美用例。
    • 你是怎么看代码的?
    • @Idan:例如像这样(在 Swift 中):NSUserDefaultsController.sharedUserDefaultsController().valueForKeyPath("values.shouldRunCI")
    【解决方案2】:

    .h 文件:

    @property (nonatomic, unsafe_unretained) IBOutlet NSButton *isCheckedButton;
    

    .m 文件

    @synthesize isCheckedButton;
    
    - (IBAction)changeButtonState:(id)sender{
    if ([isCheckedButton state]) { // Check if button is checked
        [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"YOUR KEY HERE"];
        NSLog(@"Change state to On");
    }else{
        [[NSUserDefaults standardUserDefaults] setBool:FALSE forKey:@"YOUR KEY HERE"];
         NSLog(@"Change state to Off");
    }
     [[NSUserDefaults standardUserDefaults] synchronize]; // ** DON'T FORGET THIS LINE! ** //
    }
    

    上面的代码可能更简单,但这是我认为更好理解的方式。 您始终可以通过以下方式读取值:

    [[NSUserDefaults standardUserDefaults] boolForKey:@"YOUR KEY HERE"];
    

    【讨论】:

      【解决方案3】:

      NSUserDefaults 使用-setBool:forKey: 方法。

      if(checked)
          [[NSUserDefaults standardUserDefaults] setBool:true forKey:@"RememberMe"];
      else
          [[NSUserDefaults standardUserDefaults] setBool:false forKey:@"RememberMe"];
      

      然后你就可以得到一个 actual BOOL 值,如下所示:

      BOOL checked = [[NSUserDefaults standardUserDefaults] boolForKey:@"RememberMe"];
      

      编辑:不要忘记添加synchronize 作为此调用NSUserDefaults 以立即保存数据

      [[NSUserDefaults standardUserDefaults] synchronize];
      

      【讨论】:

        【解决方案4】:

        你试试这个:

        - (void)checkboxButton:(id)sender
         {
        
         if ( checkboxSelected == 1){
        
        [ checkbox setSelected:NO];
        [checkbox setImage:[UIImage imageNamed:@"checkbox.png"] forState:UIControlStateNormal];
        
        checkboxSelected = 0;
        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
        [prefs setInteger: checkboxSelected forKey:@"checkboxstate"];
        
         } else {
        [checkbox setSelected:YES];
        [checkbox setImage:[UIImage imageNamed:@"checkbox-checked.png"] forState:UIControlStateNormal];
         checkboxSelected = 1;
        NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
        [prefs setInteger: checkboxSelected forKey:@"checkboxstate"];
        
        }
        
        
        
        }
        

        【讨论】:

        • 是的,我在 Mac 应用程序上开发,但您的代码指导了我的想法。谢谢。
        猜你喜欢
        • 2018-10-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多