Почему NSUserDefaults не работает с моим UISwitch? - PullRequest
0 голосов
/ 09 ноября 2011

Я пытаюсь настроить UIS-переключатель, который по умолчанию отключен, пока пользователь не включит его.Однако теперь он отображается по умолчанию ON.

didFinishLaunching в AppDelegate:

NSString *testValue = [[NSUserDefaults standardUserDefaults] stringForKey:@"pinCodeSwitch"];
if (!testValue) {
    // since no default values have been set, create them here
    [[NSUserDefaults standardUserDefaults] setBool:NO forKey:@"pinCodeSwitch"];
    [[NSUserDefaults standardUserDefaults] synchronize];
} 

viewDidAppear VC:

UISwitch* testSwitch = [[[UISwitch alloc] init] autorelease];
if ([[NSUserDefaults standardUserDefaults] boolForKey:@"pinCodeSwitch"]) {
    [testSwitch setOn:NO animated:NO];
}
self.pinCodeSwitch = testSwitch;

Метод сохранения BOOL при изменении значения UISwitch:

- (IBAction)pinCodeSwitchChanged:(id)sender
{
    [[NSUserDefaults standardUserDefaults] setBool:YES forKey:@"pinCodeSwitch"];
    BOOL test = [[NSUserDefaults standardUserDefaults] boolForKey:@"pinCodeSwitch"];
}

Ответы [ 2 ]

2 голосов
/ 09 ноября 2011

Вы не можете установить переключатель, так как для параметра pinCodeSwitch установлено значение NO. Он пропускает оператор if. Измените его на:

if (![[NSUserDefaults standardUserDefaults] boolForKey:@"pinCodeSwitch"]) 

(Отменить тест), затем выключатель выключится.

1 голос
/ 09 ноября 2011

Вы можете указать это значение в Интерфейсном Разработчике значением «СОСТОЯНИЕ» в ВЫКЛ. и после этого сохраните значение переключателя, применяя этот код:

[YourUiSwitch setOn:NO animated:YES];
[[NSUserDefaults standardUserDefaults]setValue:YourUiSwitch forKey:@"youruiswitch"];
[[NSUserDefaults standardUserDefaults]synchronize];

и когда представление загрузилось, загрузите его из значений по умолчанию, как показано ниже: `YourUiSwitch =

[[NSUserDefaults standardUserDefaults]valueForKey:@"youruiswitch"];`

УДАЧИ ДРУГ!

...