Я пытаюсь сохранить состояние UISwitch
в моем представлении настроек моего приложения.По сути это UITableView
и содержит несколько переключателей для получения пользовательских настроек.Приведенный ниже код объясняет, как сконструированы переключатели (ниже приведена только одна конструкция с переключателями, другие также сконструированы одинаково).
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:SomeIdentifierB] autorelease];
if (syncStartupSwitch) {
syncSwitch.on = YES;
}else {
syncSwitch.on = NO;
}
[syncSwitch addTarget:self action:@selector(syncAtStartup:) forControlEvents:UIControlEventValueChanged];
NSLog(@"Why is this not working%@",(syncSwitch.on ? @"YES" : @"NO"));
[cell.contentView addSubview:syncSwitch];
cell.accessoryView = syncSwitch;
cell.selectionStyle = UITableViewCellSelectionStyleNone;
//cell.reuseIdentifier = @"Cell1";
}
cell.textLabel.text =cellValue;
return cell;
}
Теперь я хотел бы сохранить состояние переключателей, используя NSUserDefaults.Итак, в моей реализации метода селектора я определил NSUserDefaults так:
-(void) syncAtStartup:(id)sender {
if ([sender isOn]) {
[[NSUserDefaults standardUserDefaults]
setObject:@"YES" forKey:@"SyncAtStartup"];
[[NSUserDefaults standardUserDefaults]synchronize];
NSLog(@"%@",(syncStartupSwitch ? @"YES" : @"NO"));
}else {
[[NSUserDefaults standardUserDefaults]
setObject:@"NO" forKey:@"SyncAtStartup"];
//syncStartupSwitch = [[NSUserDefaults standardUserDefaults]boolForKey:@"SyncAtStartup"];
}
}
Наконец, в моем viewDidLoad я написал следующую строку кода:
syncStartupSwitch = [[NSUserDefaults standardUserDefaults]boolForKey:@"SyncAtStartup"];
Я уверен, что есть некоторыеотсутствует логика в моей реализации.Может кто-нибудь указать на недостаток и исправить меня?
ОБНОВЛЕНИЕ: Я принял предложение от @jfalexvijay и использовал следующий код:
[[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"SyncAtStartup"];
BOOL syncStartupSwitch = [[NSUserDefaults standardUserDefaults] boolForKey:@"SyncAtStartup"];
Когда я смотрю вв папке Preferences я вижу, как создается plist со значением BOOL.Затем я пытаюсь установить состояние UISwitch в методе cellForRowAtIndexPath следующим образом:
syncSwitch.on = syncStartupSwitch;
У меня также есть эта строка кода в ApplicationWillTerminate и в самом селекторе
[[NSUserDefaults standardUserDefaults]synchronize];
Тем не менее после перезапускаВ приложении на симуляторе или устройстве состояние переключателя не восстанавливается ...
В чем моя ошибка в приведенном выше коде?
Ура,
iSee