首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >尝试从组中打开一个UISwitch,并在iOS中同时禁用其他

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

Stack Overflow用户
提问于 2014-01-23 00:44:11
回答 1查看 1.3K关注 0票数 3

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

现在,如果从2-5的开关是打开的,那么从2-5的所有其他应该关闭,并禁用。只有当从2-5打开的开关再次关闭时,所有从2-5打开的开关才启用。换句话说,开关2-5都是启用的,只有当开关全部关闭,当其中一个开关打开时,所有开关都是禁用的。我试着用我的代码来做这件事,但到目前为止还没有成功。以下是我所拥有的:

代码语言:javascript
运行
复制
- (IBAction)MainSwitchAction:(id)sender {

    if (self.mySwitch.on) {

        [self disableCheckBoxes:YES];

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

        [self disableCheckBoxes:NO];
    }

}  

当主开关打开/关闭时,将调用上述方法。我的另一个方法是:

代码语言:javascript
运行
复制
-(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。当我关闭switch1时,开关3-5是启用的.最后,当我将开关从2-5点移动时,其余的开关将被禁用(正确),然而,当我将打开的开关关闭时,2-5中的任何一个开关都不会启用。为什么?

有人能看到我做错了什么吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-03 23:12:09

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

代码语言:javascript
运行
复制
- (IBAction)switchCollectionTapped:(UISwitch *)sender {

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

        if (sender.tag != obj.tag) {
            [obj setOn:NO];
        }
    }];
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21297167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档