UISwitch没有响应NSUserDefault更改

时间:2011-06-25 20:24:17

标签: iphone objective-c xcode nsuserdefaults uiswitch

我的应用程序中有一个UISwitch以及我的设置包中的一个具有相同功能的UISwitch。但是,我的应用程序中的UISwitch未正确保存其设置。任何人都可以看到代码有什么问题吗?

- (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 :(得分:0)

尝试在UISwitch上使用on

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

编辑:无需测试unitSwitch.on已经是BOOLEAN,你可以直接分配。

答案 1 :(得分:0)

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

使用on属性进行设置。