iOS UISwitch Action调用了两次

时间:2017-02-20 12:29:35

标签: ios uiswitch

我的应用程序中有UISwitch IBAction,它是:

- (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被调用两次。我不想那样。当我从nearMeSwitchAction关闭切换时,我不想执行getLocation。还有其他方法可以实现这个目标吗?

1 个答案:

答案 0 :(得分:1)

当您更改nearMeSwitchAction值时,您无法阻止UISwitch被调用,但您可以阻止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];
}