2011-06-25 11 views
0

同じ機能を持つ設定バンドルに1つのUISwitchがあります。しかし、私のアプリのUISwitchは設定を正しく保存していません。コードに何か間違っている人はいますか?UISwitchがNSUserDefaultの変更に応答しない

- (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

答えて

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

設定にonプロパティを使用します。

+0

ユーザーが決して設定ページを開いていない場合に登録するデフォルト設定を設定する必要はありませんか?アプリが特定のキーの値を保存したことがない場合は、registerDefaultsで指定した値が取得されます。それ以外の場合は、保存された値が開始値よりも優先されます –

+0

ありがとうございます。「選択済み」ではなく「オン」がすべてを修正したと思います。 –

+1

@Faisalあなたはそれをする必要があります。私の悪い。 –

0

がUISwitchにonを使用してみてくださいバンドルさ:

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

EDIT:unitSwitch.onはすでにBOOLEANであるとしてテストする必要はありません、あなたが割り当てることができますそれは直接です。

+0

これをcellForRowメソッドまたはswitchChangedメソッドに追加しますか? –

+0

このコードは、switchChangedメソッドの最初の行を置き換える必要があります。 –

関連する問題