繁体   English   中英

从NSUserDefaults加载UISwitch的状态

[英]Load state of UISwitch from NSUserDefaults

我设法更改了UISwitch的状态并保存到NSUserDefaults

我的UISwitch与主视图处于不同的视图,并且当我在视图之间UISwitch时,即使状态可能为OFF,我的UISwitch按钮也始终显示为ON。

- (IBAction)truthonoff:(id)sender {
    if(_truthonoff.on) {
        // lights on

        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setValue:@"yes" forKey:@"truthonoff"];
        [defaults synchronize];

        self.status.text = @"on";
    }

    else {
        NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
        [defaults setValue:@"no" forKey:@"truthonoff"];
        [defaults synchronize];

        self.status.text =@"off";
    }
}

这就是我在第二个视图控制器中加载按钮的方式:

NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
self.text.text=[defaults objectForKey:@"truthonoff"];

如何确保UISwitch状态代表NSUserDefaults的值(即,当它为OFF时它显示为OFF,而当ON则显示为ON)?

尝试这个:

NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
[self.valueSwitch setOn:[[defaults objectForKey:@"truthonoff"] boolValue] animated:YES];
[self.valueSwitch addTarget:self action:@selector(stateSwitched:) forControlEvents:UIControlEventValueChanged];

stateSwitched执行以下操作:

-(void)stateSwitched:(id)sender {
    UISwitch *tswitch = (UISwitch *)sender;
    NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
    [defaults setObject: tswitch.isOn ? @"YES" : @"NO" forKey:@"truthonoff"];
    [defaults synchronize];
}

希望这可以帮助 .. :)

有点晚了,但您没有像答案那样接受:

NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
[defaults setObject: tswitch.isOn ? @"YES" : @"NO" forKey:@"truthonoff"];
[defaults synchronize];

正确的方法是:

NSUserDefaults *defaults =[NSUserDefaults standardUserDefaults];
[defaults setBool:tswitch.isOn forKey:@"truthonoff"];
[defaults synchronize];

由于NSUserDefaults可以采用boolean值,因此NSUserDefaults检查boolean值。

同样,检索布尔值会更容易:

bool truthonoff = [defaults boolForKey:@"truthonoff"];

阅读更多关于boolForKey的信息

将您的UISwitch连接到ViewControllerIBOutlet
您可以使用以下方法(取消设置)开关:

[mySwitch setOn:TRUE animated:TRUE];

方法参考

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM