尝试从组中打开一个UISwitch,并在iOS中同时禁用其他UISwitch

时间:2014-01-23 00:44:11

标签: ios uiswitch

我正在开发一个应用程序,我有一个控制其他UISwitch(开关2-5)的UISwitch(switch1)。如果开关1打开,则开关2-5关闭,并禁用。如果switch1关闭,则switch2-5应该关闭但启用,允许用户打开或关闭其中一个其他开关。

现在,如果2-5的开关打开,则2-5中的所有其他开关应关闭,并禁用。仅当从2-5开启的开关再次关闭时,才会启用2-5的所有开关。换句话说,只有在它们全部关闭时才启用开关2-5,并且当其中一个开启时,它们都被禁用。我试图用我的代码执行此操作但尚未成功。这就是我所拥有的:

- (IBAction)MainSwitchAction:(id)sender {

    if (self.mySwitch.on) {

        [self disableCheckBoxes:YES];

    }  else if (!self.mySwitch.on){

        [self disableCheckBoxes:NO];
    }

}  

打开/关闭主开关时会调用上述方法。我的另一种方法是:

-(void) disableCheckBoxes:(BOOL)switchOff {

    if (switchOff==YES) {

        for (int i = 1; 2 < 6; i++) {

            UISwitch *sw = (UISwitch *)[self.view viewWithTag:i];
            sw.on = NO;
            sw.enabled = NO;

        }


    }  else if (switchOff==NO){

        for (int i = 2; i < 6; i++) {

            UISwitch *sw = (UISwitch *)[self.view viewWithTag:i];
            sw.on = NO;
            sw.enabled = YES;

        }

    }

}

我的问题如下:

启动时,我的switch1的默认值为ON,这意味着所有其他开关应该关闭并禁用。但是,由于某种原因启用了switch2。当我关闭开关1时,开关3-5被启用。最后,当我从2-5开启移动开关时,其他剩余开关被禁用(正确),但是,当我打开开关,关闭时,2-5的所有开关都没有被启用。为什么呢?

任何人都可以看到它的错误吗?

1 个答案:

答案 0 :(得分:2)

在故事板中向UISwitch添加标签,然后在将UISwitch包含到上面提到的集合后,您可以执行以下操作:

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

    [self.switchCollection enumerateObjectsUsingBlock:^(UISwitch *obj, NSUInteger idx, BOOL * _Nonnull stop) {

        if (sender.tag != obj.tag) {
            [obj setOn:NO];
        }
    }];
}