UISwitch не отвечает на изменения NSUserDefault - PullRequest
0 голосов
/ 26 июня 2011

У меня есть UIS-переключатель в моем приложении и один в моем комплекте настроек с той же функциональностью.Однако UIS-переключатель в моем приложении не сохраняет свои настройки должным образом.Кто-нибудь может увидеть что-то не так с кодом?

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
    // Set the application defaults
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
    NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"No" forKey:@"isKgs"];
    [defaults registerDefaults:appDefaults];
    [defaults synchronize];
}

- (void)switchChanged
{
    [[NSUserDefaults standardUserDefaults] setBool:unitSwitch.selected forKey:@"isKgs"];
    [[NSUserDefaults standardUserDefaults] synchronize];
    NSLog(@"SwitchGhanged:");
}

-(void)cellForRowAtIndexPath
{
    [unitSwitch addTarget:self action:@selector(switchChanged) forControlEvents:UIControlEventValueChanged];           
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"isKgs"]) 
    {
       [unitSwitch setOn:YES animated:NO];
    }
}

А вот и пакет настроек enter image description here

Ответы [ 2 ]

0 голосов
/ 26 июня 2011
[[NSUserDefaults standardUserDefaults] setBool:unitSwitch.on forKey:@"isKgs"];

Используйте свойство on для настройки.

0 голосов
/ 26 июня 2011

Попробуйте использовать on на UISwitch:

[[NSUserDefaults standardUserDefaults] setBool:unitSwitch.on forKey:@"isKgs"];

РЕДАКТИРОВАТЬ: не нужно проверять, поскольку unitSwitch.on уже BOOLEAN, вы можете назначить его напрямую.

...