【发布时间】:2015-07-22 21:31:47
【问题描述】:
我根据我的 Web 服务响应以编程方式创建了单选按钮和复选框按钮,其中按钮的数量各不相同。
以下是创建这些按钮的代码:
for(int j = 0; j < nintOptionCount; j++)
{
UILabel * lblOption = [[UILabel alloc] initWithFrame: CGRectMake(50, yLabel, 250, 21)];
//lblOption.backgroundColor = [UIColor yellowColor];
lblOption.text = [arrmOptionName objectAtIndex:j];
lblOption.textColor = [UIColor blackColor];
lblOption.font = [UIFont systemFontOfSize:14.0f];
[viewDetail addSubview:lblOption];
intOptionId = [[arrmOptionId objectAtIndex:j] intValue];
if (intEventChoice == 1)
{
btnRadio = [[UIButton alloc]initWithFrame:CGRectMake(5, yLabel, 22, 22)];
[btnRadio addTarget:self action:@selector(radioButtonPress:) forControlEvents:UIControlEventTouchUpInside];
[btnRadio setImage:[UIImage imageNamed:@"btn_radio.png"] forState:UIControlStateNormal];
[btnRadio setTag:intOptionId];
[btnRadio setTitle:[NSString stringWithFormat:@"radio%d%d",intOptionId,intParamId] forState:UIControlStateNormal];
[viewDetail addSubview:btnRadio];
}
else
{
btnCheckBox = [[UIButton alloc]initWithFrame:CGRectMake(5, yLabel, 22, 22)];
[btnCheckBox setImage:[UIImage imageNamed:@"btn_checkbox.png"] forState:UIControlStateNormal];
[btnCheckBox addTarget:self action:@selector(checkBoxButtonPress:) forControlEvents:UIControlEventTouchUpInside];
[btnCheckBox setTag:intOptionId];
[btnCheckBox setTitle:[NSString stringWithFormat:@"check%d,%d",intOptionId,intParamId] forState:UIControlStateNormal];
[viewDetail addSubview:btnCheckBox];
}
yLabel = yLabel+ 21+10;
}
那么,我的问题是如何处理那些以编程方式创建按钮的按钮上的操作?以及如何处理按钮的选择和取消选择,因为这些按钮就像单选按钮和复选框按钮一样工作。 在单选按钮的情况下,如果我选择一个,则需要取消选择其他按钮,如果是复选框,则需要管理复选框的选择和取消选择。
我已经尝试将标签设置为按钮,但它没有像我预期的那样正常工作。
请给我一些解决方案。 提前致谢。
【问题讨论】:
-
一种选择是创建一个包含所有按钮的数组,给它们标记。现在,选择一个按钮时,循环通过数组并取消选择单个按钮外壳的所有其他按钮。 span>
-
@Bhagyashreemahajan 为每个按钮分配标签。并且从标签中你会很容易找到你点击了哪一个。
-
@Bhumit 您能否为您的解决方案提供一些示例代码,以便我清楚地了解它。
标签: ios uibutton xcode6 ibaction