iOS:选择其中一个按钮时,更改所有按钮的背景图像

时间:2017-06-22 13:57:49

标签: ios objective-c

我想从两个按钮中获取所选按钮。

这是我的情景:

在我的ViewController中,我让用户通过按钮选择3种类型(仅选择一种)。首先,只显示一个按钮。点击此按钮时,我会在其下显示另外两个按钮(一个在另一个下方,如图片。唯一的区别是我没有显示所选按钮两次(不像图中的“回复”))。

enter image description here

让我们命名3个按钮,btn1(已选中),btn2和btn3(这两个最后一个按钮位于视图中,仅在轻触btn1时显示,并在再次点击3的按钮时隐藏)。我通过这些按钮描述了3种类型,type1,type2和type3。假设btn1第一次具有背景图像type1ImageOn.png(“on”表示“选择”)和btn2 - > type2ImageOff.png和btn2 - > type3ImageOff.png。当用户选择例如btn2时,则必须将btn1(所选)图像从type1ImageOn.png设置为type2ImageOn.png,btn2 - > type1ImageOff.png和btn3 - > type3ImageOff.png。

我已经创建了一个函数,以便知道选择了什么类型,但我无法使其工作:

-(void) checkSelectedFilterBtn:(UIButton *)sender {
 UIButton *tmpFilter = sender;
 UIImage* type1ImageOff = [UIImage imageNamed:@"type1ImageOff.png"];
 UIImage* type2ImageOff = [UIImage imageNamed:@"type2ImageOff.png"];
 UIImage* type3ImageOff = [UIImage imageNamed:@"type3ImageOff.png"];

 UIImage* type1ImageOn = [UIImage imageNamed:@"type1ImageOn.png"];
 UIImage* type2ImageOn = [UIImage imageNamed:@"type2ImageOn.png"];
 UIImage* type3ImageOff = [UIImage imageNamed:@"type3ImageOn.png"];


if (tmpFilter.currentBackgroundImage == type1ImageOff)
    {
        self.selectedFilter = @"type1";
        self.filterButton.imageView.image = type1ImageOn;
        self.filterBtn2.imageView.image = type2ImageOff;
        self.filterBtn3.imageView.image = type3ImageOff;
    }
    else if (tmpFilter.currentBackgroundImage == type2ImageOff) {

        self.selectedFilter = @"type2";
        self.filterButton.imageView.image = type2ImageOn;
        self.filterBtn2.imageView.image = type1ImageOff;
        self.filterBtn3.imageView.image = type3ImageOff;

    } else {

        self.selectedFilter = @"type3";
        self.filterButton.imageView.image = type3ImageOn;
        self.filterBtn2.imageView.image = type1ImageOff;
        self.filterBtn3.imageView.image = type2ImageOff;
    }

    self.filterView.hidden = true;
}

我在btn2和btn3的IBActions中调用此函数,如下所示:

- (IBAction)filterBtn2TouchUp:(id)sender {

    [self checkSelectedFilterBtn:sender];

}

- (IBAction)filterBtn3TouchUp:(id)sender {

    [self checkSelectedFilterBtn:sender];

}

2 个答案:

答案 0 :(得分:0)

您无法将UIButton背景图像设置为button.imageview.image = image;

您必须使用setter方法设置UIButton的背景图片。

示例:

[self.filterButton setBackgroundImage:type1ImageOn forState:UIControlStateNormal];
[self.filterBtn2 setBackgroundImage:type1ImageOff forState:UIControlStateNormal];
[self.filterBtn3 setBackgroundImage:type2ImageOff forState:UIControlStateNormal];

答案 1 :(得分:0)

请在UIButton中使用setImage forState方法

[myButton setImage:[UIImage imageNamed:@"type1ImageOff.png"] forState:UIControlStateNormal];

[myButton setImage:[UIImage imageNamed:@"type1ImageOff.png"] forState:UIControlStateSelected];

一旦myButton.enabled = YES,它将显示所选的状态图像,NO显示正常状态