我正在开发一个应用程序,我有一个控制其他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的所有开关都没有被启用。为什么呢?
任何人都可以看到它的错误吗?
答案 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];
}
}];
}