2017-02-20 2 views
2

ich UISwitch IBAction in meiner app habe, genannt das ist:iOS UISwitch Aktion zweimal

- (IBAction)nearMeSwitchAction:(UISwitch *)sender { 

     if(nearMeSwitch.isOn) 
      [self getLocation]; 

     [self myMethod]; 
} 

- (void) getLocation 
{ 
    my code... 
[nearMeSwitch setOn:NO animated:YES]; 
} 

In meiner getLocation Methode, die ich verwendet habe, [nearMeSwitch setOn:NO animated:YES] die nearMeSwitchAction wieder aufruft, wenn ich auf meinem Schalter klicken. Daher wird myMethod zweimal aufgerufen. Ich will das nicht. Ich möchte nearMeSwitchAction nicht ausführen, wenn ich meinen Schalter von getLocation abstelle. Gibt es einen anderen Weg, dies zu erreichen?

+0

show ur 'getLocation' –

+0

rufen Sie Ihre Methode [self myMethod]; in anderen Fällen. Denn in beiden Fällen wird der Aufruf der Methode "Off/On" aufgerufen. –

+0

Meine Frage aktualisiert. –

Antwort

1

Sie können nicht aufhören nearMeSwitchAction, um angerufen zu werden, wenn Sie UISwitch Wert geändert haben, aber Sie können Ihre myMethod stoppen, um angerufen zu werden. Erstellen Sie eine Bool Eigenschaft wie isFromGetLocation und wenn es true ist, rufen Sie die Methode nicht auf.

- (IBAction)nearMeSwitchAction:(UISwitch *)sender { 

     if(nearMeSwitch.isOn) 
      [self getLocation]; 
     if(isFromGetLocation) 
      //For next time 
      isFromGetLocation = NO; 
     else 
      [self myMethod]; 
} 

- (void) getLocation 
{ 
    //my code... 
    isFromGetLocation = YES; 
    [nearMeSwitch setOn:NO animated:YES]; 
} 
+0

Das funktioniert! Ich habe es auch mit BOOL versucht, aber nicht funktioniert. Ich denke, ich vermisse 'if (isFromGetLocation) // Für das nächste Mal isFromGetLocation = NO;' Heute ist eindeutig nicht mein Tag. Vielen Dank!! –

+0

@ thewarri0r9 Willkommen Kumpel :) –