[英]Default UISwitch to YES then save state with NSUserDefaults
[英]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
连接到ViewController
的IBOutlet
。
您可以使用以下方法(取消设置)开关:
[mySwitch setOn:TRUE animated:TRUE];
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.