我有main window
,其中我使用button
与navigation controller
一起使用的设置view controller
。我有一个UISwitch
,我保留了UISwitch
。我的[[NSUserDefaults standardUserDefaults] setBool:startTrackingButton.on forKey:@"switchValue"];
[[NSUserDefaults standardUserDefaults] synchronize];
功能很好,但当我返回时,开关会自动转为“关闭”。
我尝试过使用这些,
NSUserDefaults
但是存在同样的问题。由于我只有一个视图控制器,我无法检索{{1}}。
任何建议?
答案 0 :(得分:1)
“由于我只有一个视图控制器,我无法检索NSUserDefaults。”
您可以在viewDIdLoad
中检索用户默认值以读取该视图中的切换位置
因此,如果您只有一个viewController
NSSsuserDefaults
正在进行在开关操作方法中保存开关状态
if (sender == _switch) {
BOOL mySwitchValue = [ sender isOn ];
NSString *tmpString = mySwitchValue ? @"1" : @"-1" ;
NSUserDefaults *myNSUD = [NSUserDefaults standardUserDefaults];
[ myNSUD setObject:tmpString forKey: @"mySwitchValueKey" ];
[ myNSUD synchronize ];
//save a key to read switch state in another view if required
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setBool:self.barCodeSwitch.on forKey:@"switch1"];
[userDefaults synchronize];
}
}
在viewDidLoad中读取已保存的开关位置
NSUserDefaults *myNSUD = [NSUserDefaults standardUserDefaults];
NSString *tmpString = [ myNSUD stringForKey: @"mySwitchValueKey"];
BOOL mySwitchValue = NO; // or DEFAULT_VALUE on/off
if (tmpString != nil) {
mySwitchValue = ( [ tmpString intValue ] == 1 );
}
[_autocompleteSwitch setOn: mySwitchValue];
答案 1 :(得分:1)
设置视图时,无论是在init方法还是在viewDidLoad中,都可以这样做。
[startTrackingButton setOn:[[NSUserDefaults standardUserDefaults] boolForKey:@"switchValue"]]
然后每次切换时切换保存开关状态
[[NSUserDefaults standardUserDefaults] setBool:startTrackingButton.on forKey:@"switchValue"];
[[NSUserDefaults standardUserDefaults] synchronize];