Сохранить состояние UISwitch, даже если приложение перезапустится - PullRequest
0 голосов
/ 04 февраля 2019

Я пытаюсь сохранить оператор switch в target-c, но он будет возвращаться в состояние по умолчанию (которое выключено) всякий раз, когда я снова открою приложение или перейду на другую страницу и вернусь на страницу с переключателем

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

У меня есть 3 переключателя, и у меня есть 3 IBOutlets для них.Я пробовал некоторые коды, чтобы сохранить состояние, но это не сработало.Как я могу заставить их работать?

Ответы [ 2 ]

0 голосов
/ 04 февраля 2019

Вам нужно сделать две вещи:

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 голосов
/ 04 февраля 2019

Вы можете решить эту проблему, храня их состояния локально и проверяя сохраненное значение каждый раз, когда вы представляете 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 */

Цель 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.Вам следует хранить их значения удаленно, если у вас есть система входа / регистрации или если вы хотите, чтобы эти данные обновлялись на нескольких устройствах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...