2017-02-20 104 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欢迎伴侣:) –