我正在构建一种带有许多 uibuttons 的检查表,我正在使用代码(而不是 IB)添加它。I would like to have it that when certain buttons are selected, other buttons cannot be selected. 例如,我有一排按钮,分别是 LOW、MEDIUM、HIGH。我不希望用户可以选择 2 个选项(如果他们想更改他们的选择,那很好,一次只能选择 2 个)。
我知道我的方法的一般结构,这是我到目前为止所拥有的:
-(void)addButtons
这是我将用按钮填充视图的地方(这里只显示一个按钮,但有很多):
-(void)addButtons{
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button addTarget:self action:@selector(clicked:) forControlEvents:UIControlEventTouchUpInside];
[button setTitle:@"" forState:UIControlStateNormal];
button.frame = CGRectMake(209, 54, 127, 18);
button.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
[imageView addSubview:button];
}
-(void)clicked:(UIButton *)sender
这是单击按钮时将调用的方法。我希望它作为参数提交。然后该按钮将更改其外观以表示它已被单击。我让它透明的原因是因为我在图像顶部有按钮,您需要查看它们下面的内容。我也不认为sender.backgroundColor = [UIColor redColor];
会像我想要的那样工作,但这不是重点。
-(void)clicked:(UIButton *)sender{
sender.alpha = 0.5;
sender.backgroundColor = [UIColor redColor];
[self setRelatedButtons:sender];
}
-(void)setRelatedButtons'
这是我将确保每个“集合”只选择一个按钮的方法
-(void)setRelatedButtons:(UIButton *)sender{
//since I know this button is clicked
//set related buttons to unclicked
}
总结一切,这就是我想知道的:
1)如何设置按钮的外观以保持选中状态?
2)我应该将什么传递给我的clicked
和setRelatedButtons
方法来识别当前按钮?现在我有按钮本身,但有更好的东西吗?
3) 关联某些按钮的最佳方式是什么?我可以为每组按钮使用一个数组,但我希望有更好的方法。我可以使用一个typedef
吗?(以前从未使用过其中之一)