2014-07-22 3 views
-2

J'ai une page de paramètres dans mon application où j'ai un UISwitch. Tout ce dont j'ai besoin, c'est juste de faire passer l'état ON/OFF à NSUserDefault. Initailly mon interrupteur est éteint J'entre dans les paramètres ON lorsque je reviens à ma vue principale et entrer dans les paramètres de retour l'état du commutateur revient à OFF.UISwitch avec NSUserDefault

Voici le code:

if ([indexPath row] == 4 && [indexPath section] == 0)//cellForRowAtIndexPath 
    { 

     UISwitch *myst =[[UISwitch alloc]initWithFrame:CGRectMake(170, 10, 30, 30)]; 
     [myst addTarget:self action:@selector(state:) forControlEvents:UIControlEventValueChanged]; 
     [cell.contentView addSubview:myst]; 

    } 


-(IBAction)state:(UISwitch *)sender 
{ 
    NSUserDefaults *standardDefaults =[NSUserDefaults standardUserDefaults]; 

    if (sender.tag == 0) { 
     if (sender.on ==1) { 
      [standardDefaults setObject:@"On" forKey:@"val"]; 

     } 
    }else if(sender.on == 0){ 

     [standardDefaults setObject:@"Off" forKey:@"val"]; 
    } 

    [standardDefaults synchronize]; 


} 

EN viewWillAppear:

[super viewWillAppear:animated]; 

    NSUserDefaults *standardDefaults =[NSUserDefaults standardUserDefaults]; 
    if ([[standardDefaults stringForKey:@"val"]isEqualToString:@"On"]) { 

     myst.on=YES; 
    }else if ([[standardDefaults stringForKey:@"val"]isEqualToString:@"Off"]){ 

     myst.on=NO; 
    } 

je dois faire l'état à savoir si se utilisateur sur il devrait être sur l'état même après la mise en vues ou arrêter et revenir l'application. Comment faire pour que cet état persiste?

Répondre

4

Vous êtes pas définition de l'état de UISwitch dans méthode cellForRowAtIndexPath de uitableview où il est créé.

En vous tableView, vous devez définir l'état de commutation,

Modifier

if ([indexPath row] == 4 && [indexPath section] == 0)//cellForRowAtIndexPath 
{ 

    UISwitch *myst =[[UISwitch alloc]initWithFrame:CGRectMake(170, 10, 30, 30)]; 
    [myst addTarget:self action:@selector(state:) forControlEvents:UIControlEventValueChanged]; 

// You have to set your older state of UISwitch here. 

     NSUserDefaults *standardDefaults =[NSUserDefaults standardUserDefaults]; 
    if ([[standardDefaults stringForKey:@"val"]isEqualToString:@"On"]) { 

     myst.on=YES; 
    }else if ([[standardDefaults stringForKey:@"val"]isEqualToString:@"Off"]){ 

     myst.on=NO; 
    } 
    [cell.contentView addSubview:myst]; 

} 
+0

vous dire l'état initial "myst.on = NO;" Est-ce correct? –

+0

Non, état que vous avez stocké dans NSuserDefault. –

+0

Je suppose que c'est OFF! –