2012-02-04 7 views
1

状態を私のtableViewController行に無駄に保存しようとしています。私は様々なstackOverflowの質問と回答、およびAppleのドキュメントを見てきましたが、何も私のアプリで動作するようです。ここでUISwitchの結果とNSUserDefaultsを保存する

は私のアプリのデリゲートです:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; 

    NSDictionary *appDefaults = [NSDictionary dictionaryWithObject:@"No" forKey:@"emailSwitch"]; 

    [defaults registerDefaults:appDefaults]; 

    [defaults synchronize]; 
} 

私はSettings.bundleセットでRoot.plistを持ち、これはアプリの設定ではなく、tableViewControllerにスイッチした結果を作業して保存しているようです。たとえば、私が設定で "on"に切り替えると、私がtableViewControllerにオブジェクトを追加すると、スイッチは "オフ"になります。ここで

はtableViewController.hファイルの該当コードです:ここでは

@property (nonatomic, getter=isOn) BOOL on; 

- (void)toggleValue:(id)sender; 

はtableViewController mのファイルの該当コードです:

- (void)viewWillAppear:(BOOL)animated 
{  
    if ([[NSUserDefaults standardUserDefaults] boolForKey:@"emailSwitch"]) 
    { 
     [emailSwitch setOn:YES animated:NO]; 
    } 
    else 
    { 
     [emailSwitch setOn:NO animated:NO]; 
    } 
} 

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    static NSString *CellIdentifier = @"Cell"; 

    customTableViewCell *cell = (customTableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

    if (cell == nil) { 

     cell = [[CustomTableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 

    } 

//Code regarding cell contents here 

    UISwitch *switchObj = [[UISwitch alloc] initWithFrame:CGRectZero]; 

    [switchObj addTarget:self action:@selector(toggleValue:) forControlEvents:(UIControlEventValueChanged | UIControlEventTouchDragInside)]; 

    cell.accessoryView = switchObj; 

    return cell; 
} 

-(void)toggleValue:(id)sender 
{ 
    [[NSUserDefaults standardUserDefaults] setBool:emailSwitch.on forKey:@"emailSwitch"]; 

    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 

あなたはtableViewControllerにオブジェクトを追加するとし、 UISwitchを「オン」に切り替えると、「オン」状態は保存されません。私は様々なアプローチを試みましたが、何も動いていません。誰かが私が間違っていることを教えてもらえれば、本当に感謝しています。あなたが提供できるあらゆる助けを前もって感謝します。

答えて

2

私が正しくあなたの質問を理解していれば、あなたのtoggleValue方法は次のようになります。質問に答えるための

-(void)toggleValue:(UISwitch*)sw 
{ 
    [[NSUserDefaults standardUserDefaults] setBool:sw.on forKey:@"emailSwitch"]; 

    [[NSUserDefaults standardUserDefaults] synchronize]; 
} 
+0

おかげで、しかし、あなたはそれが10ヶ月前に頼まれた見ることができるように - 私は「wasn何スクラップすることを決定しました働いて、始めた。 – PopUp

関連する問題