我有三个UIButtons子类(RadioBox)。我试图让它一次只能选择三个RadioBox中的一个。为此,我有两个委托方法; radioSelectedState和radioUnselectedState。分别在选择和取消选择RadioBox时调用这些方法。不幸的是,我的代码到目前为止只允许一次选择一个按钮,但是如果我取消选择当前选择的按钮,按钮将取消选择而不是保持相同的状态。
请告诉我我哪里出错了?
先谢谢。
- (void) radioSelectedState:(RadioBox *) rb {
if (selectedRadios == nil) {
selectedRadios = [[NSMutableArray alloc] init];
}
if ([selectedRadios count] == 0) {
[selectedRadios addObject:rb];
}
else if ([selectedRadios count] == 1 && ![selectedRadios containsObject:rb] ) {
[(RadioBox *) [selectedRadios objectAtIndex:0] setState:RadioBoxStateUnselected];
[selectedRadios removeObjectAtIndex:0];
[selectedRadios addObject:rb];
}
else if ([selectedRadios count] == 1 && [selectedRadios containsObject:rb]) {
return;
}
}
- (void) radioUnselectedState:(RadioBox *) rb {
if ([selectedRadios count] == 1) {
return;
}
[selectedRadios removeObject:rb];
}
答案 0 :(得分:1)
您可以轻松地将您的RadioBox对象保留在NSArray中,并在每次选择一个时循环遍历它,确保取消选中其他所有对象。
类似的东西:
// This assumes you have your RadioBox objects inside an NSArray named radioBoxArray
- (void)radioBoxTapped:(RadioBox *)rb {
for (RadioBox * box in radioBoxArray) {
[box setSelected:NO];
}
[rb setSelected:YES];
}
答案 1 :(得分:0)
为您的协议添加新方法
- (BOOL)radioCanUnselect:(RadioBox *)radioBox;
在进行任何取消选择之前调用此方法,控制器只回复YES
/ NO
然后您做出相应的回应。
你也可以用其他方式做同样的事情
- (BOOL)radioCanSelect:(RadioBox *)radioBox;
并添加允许一次选择的数量的规则