【发布时间】:2012-09-11 14:25:26
【问题描述】:
我有复选框记住密码(用于登录表单)。我想当我检查时记住它保存并运行它显示复选框检查。如果我取消选中它运行并显示复选框取消选中。请分享给我。提前感谢
【问题讨论】:
标签: objective-c xcode cocoa
我有复选框记住密码(用于登录表单)。我想当我检查时记住它保存并运行它显示复选框检查。如果我取消选中它运行并显示复选框取消选中。请分享给我。提前感谢
【问题讨论】:
标签: objective-c xcode cocoa
将复选框值绑定到共享用户默认控制器上的某个键:
(您没有具体说明这是 iOS 还是 Mac,但由于 iOS 中没有标准的复选框控件,我假设是后者。)
【讨论】:
NSUserDefaultsController.sharedUserDefaultsController().valueForKeyPath("values.shouldRunCI")
.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"];
【讨论】:
对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];
【讨论】:
你试试这个:
- (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"];
}
}
【讨论】: