即使该应用程序被重新保存UISwitch状态

问题描述 投票:-4回答:2

我想保存在Objective-C的switch语句,但它会返回到默认状态(这是关闭的),每当我重新打开应用程序或转到另一个页面,然后回来有切换页面

@property (strong, nonatomic) IBOutlet UISwitch *switch1;
@property (strong, nonatomic) IBOutlet UISwitch *switch2;
@property (strong, nonatomic) IBOutlet UISwitch *switch3;

我有3个交换机和我有3个IBOutlets他们。我尝试过的一些代码保存状态,但没有奏效。我怎样才能让他们的工作?

ios objective-c swift iphone cocoa-touch
2个回答
1
投票

你需要做两件事情:

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"];
}

0
投票

您可以通过本地存储它们的状态和每一个你目前的UISwitch时间检查储值解决。

斯威夫特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 */

目标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状态。你应该保存它们的值远程如果你有一个登录/注册系统,或者您希望这个数据在多个设备上进行更新。

© www.soinside.com 2019 - 2024. All rights reserved.