2016-04-04 4 views
0

Ich weiß, dass dies schon einmal gefragt wurde, aber ich habe noch eine Lösung zu finden. Ich versuche, den UISwitch-Zustand zu speichern, so dass dieser Schalterzustand immer noch aktiv ist, egal, welchen VC ich betrete. Aber immer wenn ich den VC verlasse, ist der Schalter eingeschaltet, es ist ausgeschaltet. Derzeit ist dies der Code, den ich mit dem Schaltzustand zu speichern:Speichern UISwitch Status - Objective C

- (IBAction)tvpSwitch:(UISwitch *)sender { 
    if (sender.isOn) { 
    [[NSUserDefaults standardUserDefaults]setObject:@"on" forKey:@"tvpSwitch"]; 
    [[NSUserDefaults standardUserDefaults]synchronize]; 


} 
else { 
    [[NSUserDefaults standardUserDefaults]setObject:@"off" forKey:@"tvpSwitch"]; 
    [[NSUserDefaults standardUserDefaults]synchronize]; 
}} 

ich dann setzen Sie diese jede VC viewWillAppear ist:

-(void)viewWillAppear:(BOOL)animated 
{ 
if ([[[NSUserDefaults standardUserDefaults]valueForKey:@"tvpSwitch"]isEqualToString:@"on"]) 
{ 
     (sender.isOn=YES); 
} 
else 
{ 
     (sender.isOn=NO); 
}} 

Es ist auch Flaggen in der viewWillAppear Methode, die lautet: „Use des nicht deklarierten Identifikators "Absender". "Ich versuche normalerweise, das Referenzhandbuch zu verwenden, aber es fällt mir schwer zu erkennen, wo das Problem liegt. Jede Hilfe wäre großartig! Vielen Dank!

+1

Wie schaffen Sie das 'UISwitch'? Denn wo ist dein 'sender', solltest du dich auf den switch beziehen (wie, self.nameOfTheSwitch) –

Antwort

0

Wie Sie haben eine IBAction dort, ich nehme an, Sie haben die UISwitch Trog Interface Builder erstellt. Wenn das der Fall ist, erstelle einen IBOutlet aus dem UISwitch und referenziere ihn dann immer.

0

In der ersten Code-Schnipsel sender ist der Parameter in der IBAction Methode übergeben, die eine Referenz auf die UISwitch ist.

In den anderen View-Controllern benötigen Sie einen Verweis auf diese UISwitch, aber wenn Sie nur diesen Status überprüfen möchten, ohne es in der Benutzeroberfläche ändern zu können, erhalten Sie es einfach von NSUserDefaults und verwenden Sie es.

Übrigens gibt es bestimmte Methoden von NSUserDefaults zum Speichern eines BOOL Typs.

- (IBAction)tvpSwitch:(UISwitch *)sender { 
    [[NSUserDefaults standardUserDefaults] setBool:sender.isOn forKey:@"tvpSwitch"]; 
} 

BOOL switchState; 

-(void)viewWillAppear:(BOOL)animated 
{ 
    switchState = [[NSUserDefaults standardUserDefaults] boolForKey:@"tvpSwitch"]; 
    // do something with switchState 
} 
+0

Ich habe versucht, dein Code funktioniert irgendwie so, wie ich es will. Das Problem, das ich noch habe, ist, dass es nur als ein eingeschalteter Zustand gelesen wird. Das Ziel ist, dass, wenn es einen Zustandswechsel gibt, Benutzereinstellungen gespeichert werden und ich diesen Status abrufen kann. Ich habe ein paar if-Anweisungen mit Ihrem obigen Code ausprobiert und noch keine Lösung gefunden. Hättest du eine Idee dafür? Wenn ich deine Antwort auch falsch verstanden habe, entschuldige ich mich. –