坦白:我已经浏览了我能找到的所有可能的链接,但不幸的是没有一个对我有用。
我正在动态创建按钮。当选择一个按钮时,它应该更改所选按钮的颜色,其余按钮应保持默认颜色。这样,用户就可以识别选择了哪个按钮。
假设有 3 个按钮:全部为蓝色,当我选择第一个按钮时,它应该变为白色,其他两个按钮应保持蓝色。当我选择第二个时,第一个应该变回蓝色,第二个现在应该是白色。
btnCounts 我从服务器获取的数据会有所不同。
-(void)createButtons{
for (int i=0; i<btnCounts; i++) {
UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[btn setTag:i];
[btn setFrame:CGRectMake(xVal, 0, width/btnCounts, 40)];
// [btn setImage:[UIImage imageNamed:@"btn_image.png"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"blue.png"] forState:UIControlStateNormal];
[btn setBackgroundImage:[UIImage imageNamed:@"white.png"] forState:UIControlStateSelected];
[btn setTitle:name forState:UIControlStateNormal];
[btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[btn addTarget:self action:@selector(btnClicked:) forControlEvents:UIControlEventTouchUpInside];
[scrV addSubview:btn];
xVal += self.view.frame.size.width/btnCounts+1;
}
}
现在,在 btnClicked: 方法中,我将按钮作为参数传递,以便我可以使用选定的按钮。
-(void)btnClicked:(UIButton *)button
{
int tag = (int)button.tag;
//...
}
请帮我找到我在这里缺少的东西。
谢谢。
最佳答案
创建一个实例 UIButton
变量来存放所选按钮,以便您可以在点击下一个按钮时取消选择它。如果您只将当前点击的按钮传递给您的 btnClicked:
方法,您将不知道要取消选择哪个按钮(如果有的话)。
@implementation ClassName {
UIButton *previousButton;
}
...
- (void)btnClicked:(UIButton *)button
{
if(previousButton)
[previousButton setBackgroundColor:[UIColor blueColor]];
previousButton = button;
[button setBackgroundColor:[UIColor whiteColor]];
// do whatever else you need to do here
}
关于ios - 如何在ios中单击按钮时更改按钮的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32698562/