即使应用程序重新启动,也保存 UISwitch 状态
Save UISwitch state even if the app gets restarted
我试图在 objective-c 中保存 switch 语句,但每当我重新打开应用程序或转到另一个页面并返回到该页面时,它都会返回到默认状态(关闭)有开关
@property (strong, nonatomic) IBOutlet UISwitch *switch1;
@property (strong, nonatomic) IBOutlet UISwitch *switch2;
@property (strong, nonatomic) IBOutlet UISwitch *switch3;
我有 3 个开关,我有 3 个 IBOutlets。我尝试了一些代码来保存状态,但没有用。我怎样才能让他们工作?
您可以通过在本地存储它们的状态并在每次显示 UISwitch
时检查存储的值来解决它。
Swift 4:
UserDefaults.standard.set(<#Switch#>.isOn, forKey: "switch_name_here")
let value = UserDefaults.standard.value(forKey: "switch_name_here")
// Then you compare if value == true and set <#Switch#>.isOn = /* stored state */
Objective C:
NSString *valueToSave = @"YES"; // or "NO" if switch is off.
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"switch_name_here"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *savedValue = [[NSUserDefaults standardUserDefaults] stringForKey:@"switch_name_here"];
// Then you compare to "YES" or "NO" and set [<#Switch#> setOn: /* stored state */]
注:
获取存储值后,更新 UISwitch
状态。如果您有 login/register 系统或者如果您希望在多个设备中更新此数据,则应远程存储它们的值。
你需要做两件事:
1:保存开关变化时的状态:
-(IBAction) switchChanged:(UISwitch *)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:sender.isOn forKey:@"MySwitch"];
}
2:加载视图控制器时获取开关的状态:
-(void) viewDidLoad {
[super viewDidLoad];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
switch1.isOn = [defaults boolForKey:@"MySwitch"];
}
我试图在 objective-c 中保存 switch 语句,但每当我重新打开应用程序或转到另一个页面并返回到该页面时,它都会返回到默认状态(关闭)有开关
@property (strong, nonatomic) IBOutlet UISwitch *switch1;
@property (strong, nonatomic) IBOutlet UISwitch *switch2;
@property (strong, nonatomic) IBOutlet UISwitch *switch3;
我有 3 个开关,我有 3 个 IBOutlets。我尝试了一些代码来保存状态,但没有用。我怎样才能让他们工作?
您可以通过在本地存储它们的状态并在每次显示 UISwitch
时检查存储的值来解决它。
Swift 4:
UserDefaults.standard.set(<#Switch#>.isOn, forKey: "switch_name_here")
let value = UserDefaults.standard.value(forKey: "switch_name_here")
// Then you compare if value == true and set <#Switch#>.isOn = /* stored state */
Objective C:
NSString *valueToSave = @"YES"; // or "NO" if switch is off.
[[NSUserDefaults standardUserDefaults] setObject:valueToSave forKey:@"switch_name_here"];
[[NSUserDefaults standardUserDefaults] synchronize];
NSString *savedValue = [[NSUserDefaults standardUserDefaults] stringForKey:@"switch_name_here"];
// Then you compare to "YES" or "NO" and set [<#Switch#> setOn: /* stored state */]
注:
获取存储值后,更新 UISwitch
状态。如果您有 login/register 系统或者如果您希望在多个设备中更新此数据,则应远程存储它们的值。
你需要做两件事:
1:保存开关变化时的状态:
-(IBAction) switchChanged:(UISwitch *)sender {
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setBool:sender.isOn forKey:@"MySwitch"];
}
2:加载视图控制器时获取开关的状态:
-(void) viewDidLoad {
[super viewDidLoad];
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
switch1.isOn = [defaults boolForKey:@"MySwitch"];
}