ios中有多个单选button
我有四个不同的收音机用于不同的目的。 我为所有四个添加了相同的select器。 而在select器方法中,我已经编写了所有四种单选button的代码。 所以它增加了行数。 那么编写相同代码的最好方法是什么?
(void)checkBoxSelected:(id)sender{ switch ([sender tag]) { case 1: if([checkBoxDisel isSelected]==YES) { [checkBoxDisel setSelected:NO]; [checkBoxPetrol setSelected:NO]; } else{ [checkBoxDisel setSelected:YES]; [checkBoxPetrol setSelected:NO]; } break; case 2: if([checkBoxPetrol isSelected]==YES) { [checkBoxPetrol setSelected:NO]; [checkBoxDisel setSelected:NO]; } else{ [checkBoxPetrol setSelected:YES]; [checkBoxDisel setSelected:NO]; } break; case 3: if([checkBoxYes isSelected]==YES) { [checkBoxYes setSelected:NO]; [checkBoxNo setSelected:NO]; } else{ [checkBoxYes setSelected:YES]; [checkBoxNo setSelected:NO]; } break; case 4: if([checkBoxNo isSelected]==YES) { [checkBoxNo setSelected:NO]; [checkBoxYes setSelected:NO]; } else{ [checkBoxNo setSelected:YES]; [checkBoxYes setSelected:NO]; } break; case 5: if([checkBoxMale isSelected]==YES) { [checkBoxMale setSelected:NO]; [checkBoxFemale setSelected:NO]; } else{ [checkBoxMale setSelected:YES]; [checkBoxFemale setSelected:NO]; } break; case 6: if([checkBoxFemale isSelected]==YES) { [checkBoxFemale setSelected:NO]; [checkBoxMale setSelected:NO]; } else{ [checkBoxFemale setSelected:YES]; [checkBoxMale setSelected:NO]; } break; default: break; } }
以下几行:
if([checkBoxYes isSelected]==YES) { [checkBoxYes setSelected:NO]; [checkBoxNo setSelected:NO]; } else{ [checkBoxYes setSelected:YES]; [checkBoxNo setSelected:NO]; }
可以改写为
checkBoxYes.selected = !checkBoxYes.selected; checkBoxNo.selected = NO;
对于你巨大的switch
每一种情况也是如此。
你有没有考虑过使用分段控制?
首先,iOS中的单选button是分段控件。
如果您想使用自己的button,我build议使用IBOutletCollection
而不是简单的IBOutlet
。 因此,你将不会有4个不同名称的button,你将有一个数组与button,你可以迭代通过数组,并设置选定的状态,并取消select其他。
for (UIButton *radioButton in radioButtons) { if (radioButton.tag == [sender tag]) { [radioButton setSelected:YES]; } else { [radioButton setSelected:NO]; } }
其中radioButtons
是包含单选button的IBOutletCollection
数组。
此外,创build一个分离的对象(如YZRadioControl)将是理想的,它将包含button并负责pipe理select。 当然,这将是可定制的。 像这个或这个或者也许这个或者这个 …
祝你好运!
在发件人中,您可以访问button:
UIButton* myButton = (UIButton*)sender;
简单的方法遍历所有的UIbutton对象,并设置为禁用,并启用此button。
-(void)checkBoxSelected:(id)sender{ for (UIButton *radioButton in radioButtons) { [radioButton setSelected:NO]; } UIButton* myButton = (UIButton*)sender; [myButton setSelected:YES]; //or //[sender setSelected:YES]; }
variablesradioButtons包含所有的UIButton对象。