ios - 如何在ios中单击按钮时更改按钮的图像

标签 ios objective-c uibutton

坦白:我已经浏览了我能找到的所有可能的链接,但不幸的是没有一个对我有用。

我正在动态创建按钮。当选择一个按钮时,它应该更改所选按钮的颜色,其余按钮应保持默认颜色。这样,用户就可以识别选择了哪个按钮。

假设有 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/

相关文章:

iOS 7 不调用 layoutSubviews

ios - init中返回nil会导致内存泄漏吗?

iphone - 返回 PHP 网页生成的字符串

objective-c - 替换 Objective-C Foundation 函数实现

objective-c - 从 Objective-C++ 调用 swift 函数

ios - UIButton 中的 UIView

ios - 将快速添加方法包含到 UITableView 的方法

ios - 控制 UICollectionViewController 中单元格之间的间隙

ios - 我应该避免使用 new 来初始化我的对象吗?

ios - 更改没有淡入淡出效果的 UIButton 标题?