Xcode单选按钮 - 按下另一个按钮时更改按钮的背景图像

时间:2014-06-06 18:01:17

标签: ios objective-c xcode xcode5

我正在尝试实现自己的基本单选按钮,这样一次只能选择其中一个按钮。 这是我正在使用的代码 - >

- (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;
}

但它不起作用,即另一个按钮的图像没有变化。 :(

我无法弄清楚我做错了什么。

2 个答案:

答案 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 ^