我想从两个按钮中获取所选按钮。
这是我的情景:
在我的ViewController
中,我让用户通过按钮选择3种类型(仅选择一种)。首先,只显示一个按钮。点击此按钮时,我会在其下显示另外两个按钮(一个在另一个下方,如图片。唯一的区别是我没有显示所选按钮两次(不像图中的“回复”))。
让我们命名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];
}
答案 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显示正常状态