试图从组中打开一个UISwitch,并在iOS中同时禁用其他UISwitch
我正在开发一个应用程序,其中我有一个UISwitch(开关1),用于控制其他UISwitch(开关2-5)。如果开关1接通,则开关2-5断开并禁用。如果开关1关闭,则开关2-5应关闭但已启用,允许用户打开或关闭其中一个其他开关 现在,如果2-5的开关打开,那么2-5的所有其他开关都应该关闭并禁用。只有当从2-5接通的开关再次断开时,2-5的所有开关才会启用。换句话说,只有当开关2-5全部关闭时,开关2-5才全部启用;当其中一个打开时,开关2-5全部禁用。我正试图用我的代码来实现这一点,但到目前为止还没有成功。以下是我所拥有的:试图从组中打开一个UISwitch,并在iOS中同时禁用其他UISwitch,ios,uiswitch,Ios,Uiswitch,我正在开发一个应用程序,其中我有一个UISwitch(开关1),用于控制其他UISwitch(开关2-5)。如果开关1接通,则开关2-5断开并禁用。如果开关1关闭,则开关2-5应关闭但已启用,允许用户打开或关闭其中一个其他开关 现在,如果2-5的开关打开,那么2-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;
}
}
}
-(无效)禁用复选框:(BOOL)关闭{
如果(关闭==是){
对于(int i=1;2<6;i++){
UISwitch*sw=(UISwitch*)[带标记的self.view视图:i];
sw.on=否;
sw.enabled=否;
}
}否则如果(关闭==否){
对于(int i=2;i<6;i++){
UISwitch*sw=(UISwitch*)[带标记的self.view视图:i];
sw.on=否;
sw.enabled=是;
}
}
}
我的问题如下:
启动时,我的开关1的默认值为ON,这意味着所有其他开关都应关闭并禁用。但是,由于某些原因,开关2已启用。当我关闭开关1时,开关3-5启用。最后,当我将一个开关从2-5打开时,其余的开关被禁用(正确),但是,当我将打开的开关转到关闭时,2-5的开关没有一个被启用。为什么?
有人知道我做错了什么吗?在故事板中向UISwitch添加标签,然后在将UISwitch包括到上述集合中后,可以执行以下操作:
- (IBAction)switchCollectionTapped:(UISwitch *)sender {
[self.switchCollection enumerateObjectsUsingBlock:^(UISwitch *obj, NSUInteger idx, BOOL * _Nonnull stop) {
if (sender.tag != obj.tag) {
[obj setOn:NO];
}
}];
}
(inti=1;2<6;i++)的循环
中的条件看起来不太好…我正要这么说。2<6将循环将开关置于IBCollection中,并对每个
循环使用一个。在一个示例中,您能告诉我如何将开关置于IBCollection中吗?当您在脚本中按住Ctrl键并拖动到.m
文件时,只需从允许您命名的弹出窗口中选择Outlet Collection
。将所有开关挂在同一插座集合中。