切换状态不链接到Label

时间:2016-03-10 13:18:10

标签: ios

出于某种原因,使用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";}

}

我知道我只是在做一些简单的错误,但却无法弄清楚是什么。

1 个答案:

答案 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];
}