出于某种原因,使用NSUserDefaults保存我的交换机的状态,我的标签似乎不起作用。我可以保存我的开关的状态并加载它,但是除非我手动改变开关的状态,否则标签不会改变为打开或关闭。
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
self->switch1.on = ([[standardDefaults stringForKey:@"switchKey"]
isEqualToString:@"On"]) ? (YES) : (NO);
正如你所看到的,我在开关关闭时添加了label.text = @“OFF”但是它仍然没有改变。
- (IBAction)switchChanged:(UISwitch *)sender {
NSUserDefaults *standardDefaults = [NSUserDefaults standardUserDefaults];
if (sender.on == 0) {
label.text = @"OFF";
[standardDefaults setObject:@"Off" forKey:@"switchKey"];
} else if (sender.on == 1) {
label.text = @"ON";
[standardDefaults setObject:@"On" forKey:@"switchKey"];
}
[standardDefaults synchronize];
}
在我想保存开关状态之前,我刚用过它。
-(IBAction) alarmSettings1{
if (switch1.on)
{ label.text = @"ON";}
else { label.text = @"OFF";}
}
我知道我只是在做一些简单的错误,但却无法弄清楚是什么。
答案 0 :(得分:0)
你应该像这样设置你的布尔值:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"switchKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
因此,当你想设置开关的状态时,你会这样做:
BOOL switchState = [[NSUserDefaults standardUserDefaults] objectForKey:@"switchKey"];
self.switch1.on = switchState;
此外,在您的IBAction
方法中,请阅读状态:
- (IBAction)switchChanged:(UISwitch *)sender {
label.text = sender.on ? @"ON" : @"OFF";
[[NSUserDefaults standardUserDefaults] setBool:sender.on forKey:@"switchKey"];
[[NSUserDefaults standardUserDefaults] synchronize];
}