2 votes

Sauvegarde et chargement de l'état d'UISwitch

Je veux sauvegarder l'état de l'interrupteur et le charger lorsque le programme redémarre.

[[NSUserDefaults standardUserDefaults] setBool:switchControl.on forKey:@"switch"];
[[NSUserDefaults standardUserDefaults] synchronize];

C'est la partie qui sauve

BOOL test= [[NSUserDefaults standardUserDefaults] boolForKey:@"switch"];
NSLog(@"%@",test?@"YES":@"NO");
if(test == YES)
    [switchControl setOn:YES animated:YES];
else
     [switchControl setOn:NO animated:YES];

Je l'ai fait dans la méthode viewdidload parce que lorsque je ferme l'application et que je la redémarre, je veux que l'état de l'interrupteur soit défini dans la partie sauvegardée.

Mais il affiche toujours la partie par défaut. Pouvez-vous m'aider à la régler ?

11voto

uvesten Points 2616

Avez-vous créé le commutateur comme un IBOutlet avec des propriétés ? Si c'est le cas, je pense que votre problème est que vous ne faites pas référence à vos propriétés. switchControl comme self.switchControl .

Alors votre déclaration d'épargne correcte deviendra

[[NSUserDefaults standardUserDefaults] setBool:self.switchControl.on forKey:@"switch"];
[[NSUserDefaults standardUserDefaults] synchronize];

Je déplacerais la partie qui règle l'interrupteur en viewWillAppear et faites comme ceci :

- (void)viewWillAppear:(BOOL)animated
{
  [super viewWillAppear:animated];
  BOOL test= [[NSUserDefaults standardUserDefaults] boolForKey:@"switch"];
  NSLog(@"%@",test?@"YES":@"NO");
  [self.switchControl setOn:test animated:YES];
}

J'ai enlevé une phrase "si" inutile pour toi, aussi.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X