我正在尝试实现自己的基本单选按钮,这样一次只能选择其中一个按钮。 这是我正在使用的代码 - >
- (IBAction)btn2Pressed:(UIButton *)sender {
[btn1 setBackgroundImage:[UIImage imageNamed:@"circle-uncheck.png"] forState:UIControlStateNormal];
btn2pressed = YES;
btn1pressed = NO;
}
- (IBAction)btn1Pressed:(UIButton *)sender {
[btn2 setBackgroundImage:[UIImage imageNamed:@"circle-uncheck.png"] forState:UIControlStateNormal];
btn1pressed = YES;
btn2pressed = NO;
}
但它不起作用,即另一个按钮的图像没有变化。 :(
我无法弄清楚我做错了什么。
答案 0 :(得分:1)
当您按下2个按钮中的任何一个时,将背景图像设置为circle-uncheck.png
。如何将其更改为checked
?我猜它会永远保持unchecked
。
编辑(由于您在下方发表评论):
如果您在界面生成器中将背景图像设置为最初,则只要按下按钮,它们就会更改为circle-uncheck.png
,并且它们显然永远不会设置为{ {1}}州
您必须将代码修改为
checked
答案 1 :(得分:0)
如果你不想使用UISegmentedControl
,我会创建一个IBOutletCollection
并将所有单选按钮链接到它。
@property(nonatomic, strong) IBOutletCollection(UIButton) NSArray *radioButtons;
在“界面”构建器中,我将设置选定的状态背景图像和正常状态背景图像。
或者代码类似:
[btn1 setBackgroundImage:[UIImage imageNamed:@"circle-uncheck.png"] forState:UIControlStateNormal];
[btn1 setBackgroundImage:[UIImage imageNamed:@"circle-check.png"] forState:UIControlStateSelected];
然后我会创建一个控制功能:
-(IBAction)didSelectRadioButton:(id)sender
{
for(UIButton *button in self.radioButtons){
button.selected = NO;
}
UIButton *selectedButton = (UIButton *)sender;
selectedButton.selected = YES;
}
使用UIButton的简单无线电解决方案,可扩展:)
w ^