Как сохранить состояние коммутатора с пользовательскими настройками по умолчанию? - PullRequest
1 голос
/ 27 августа 2010

Есть ли способ сохранить состояние UISwitch с NSUserDefaults?
Если состояние включено, я бы хотел установить какое-то действие ...

Могу ли я это сделать?
Спасибо!

Ответы [ 2 ]

3 голосов
/ 30 августа 2010

Ответ hotpaw2 хорош и может также хорошо работать для большого сегментированного управления (более 2 состояний).Но если вы хотите сохранить только 2 состояния, почему бы просто не использовать [setBool:forKey:] как этот

    NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
   [userDefaults setBool:switchState forKey:@"mySwitchValueKey"];

и вывести его:

   BOOL swichState = [userDefaults boolForKey:@"mySwitchValueKey"];

что, по моему мнению, намного прощенет, если еще код вообще, нет преобразования строк назад и для

1 голос
/ 27 августа 2010

Для сохранения:

- (void)mySwitchAction:(id)sender
{
  if (sender == mySwitch) {
    BOOL mySwitchValue = [ sender isOn ];
    NSString *tmpString = mySwitchValue ? @"1" : @"-1" ;
    NSUserDefaults  *myNSUD = [NSUserDefaults standardUserDefaults];
    [ myNSUD setObject:tmpString forKey: @"mySwitchValueKey" ];
    [ myNSUD synchronize ];
    // do other stuff/actions
  }
}

Для инициализации из сохраненного состояния:

NSUserDefaults  *myNSUD = [NSUserDefaults standardUserDefaults];
NSString *tmpString =  [ myNSUD stringForKey: @"mySwitchValueKey"];
BOOL mySwitchValue = NO;  // or DEFAULT_VALUE
if (tmpString != nil) { 
  mySwitchValue = ( [ tmpString intValue ] == 1 ); 
}
[mySwitch setOn: mySwitchValue];
...