2017-02-20 60 views
2

我UISwitch IBAction爲我的應用程序,這就是:的iOS UISwitch動作叫了兩聲

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

     if(nearMeSwitch.isOn) 
      [self getLocation]; 

     [self myMethod]; 
} 

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

在我getLocation方法我用過[nearMeSwitch setOn:NO animated:YES]再次呼籲nearMeSwitchAction當我點擊我的開關。因此myMethod被調用兩次。我不想那樣。當我從getLocation關閉我的開關時,我不想執行nearMeSwitchAction。有沒有其他的方法來完成這個?

+0

show your'getLocation' –

+0

call your method [self myMethod];在其他情況下。因爲在這兩種情況下關閉/打開你的方法被調用。 –

+0

更新了我的問題。 –

回答

1

當您更改UISwitch值時,您無法停止nearMeSwitchAction,但可以停止myMethod的調用。創建一個Bool財產,如isFromGetLocation,如果是true則不要調用該方法。

- (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

This Works!我也嘗試過使用BOOL,但沒有工作。我想我錯過了'如果(isFromGetLocation) //下次 isFromGetLocation = NO;'今天顯然不是我的一天。謝謝!! –

+0

@ thewarri0r9歡迎伴侶:) –