首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >iOS:我给我的uibutton设置了标签。如何根据标签更改特定的按钮图像?

iOS:我给我的uibutton设置了标签。如何根据标签更改特定的按钮图像?
EN

Stack Overflow用户
提问于 2014-03-04 01:15:45
回答 4查看 3.8K关注 0票数 0

我有一个名为button的多个按钮数组。每一个都有标签。如何仅根据标记和标记更改按钮上的图像。到目前为止,它只改变了最后一个按钮。

代码语言:javascript
运行
复制
    -(void)buttonTapped:(id)sender{

     NSLog (@"%i",[sender tag])];

      [button setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
        }
EN

回答 4

Stack Overflow用户

发布于 2014-03-04 01:18:50

以下任一项:

代码语言:javascript
运行
复制
for (UIButton *btn in button) {
    if(btn.tag == 1)
    {
        // do something
        break; // don't need to run the rest of the loop
    }
}

如果你想使用数组(它不应该被称为'button',可以用复数来表示数组)

或者一种更简单的方法:

代码语言:javascript
运行
复制
UIButton *btn = (UIButton *)[self.view viewWithTag:1];

然而,更简单的方法是在回调中使用参数(除非这不是你想要的按钮)。如下所示:

代码语言:javascript
运行
复制
-(void)buttonTapped:(id)sender
{
     UIButton *tappedBtn = (UIButton *)sender;
     [tappedBtn setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
}
票数 1
EN

Stack Overflow用户

发布于 2014-03-04 01:20:09

如果你只是想改变被点击的按钮,下面的方法应该可以。

代码语言:javascript
运行
复制
   -(void)buttonTapped:(id)sender
   {
     NSLog (@"%i",[sender tag])];
     UIButton *tappedButton = (UIButton *)sender;
     [tappedButton setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
   }

如果要更改其他按钮,则可以使用以下命令检索按钮

代码语言:javascript
运行
复制
[self.view viewWithTag:1000]; //1000 is the tag you assigned
票数 0
EN

Stack Overflow用户

发布于 2014-03-04 01:51:07

在这种情况下,您实际上不需要使用标记。调用IBAction时,发送器参数是指向触发IBAction的控件的指针。(您的按钮。)

因此,您已经有了指向该按钮的指针。

因此,正如其他人所指出的,您的代码可能如下所示:

代码语言:javascript
运行
复制
-(void)buttonTapped:(UIButton *)sender
{
  [sender setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
}

请注意,我将发送器的类型更改为UIButton,这样您就不必强制转换它。只要操作只连接到一个按钮,这样做是安全的,并使代码更干净。

正如另一张海报所指出的那样,拥有一组称为"button“的按钮是不好的。在下面的代码中,我将其重命名为“button”:

如果你想使用标签和一组按钮,你可以使用如下代码:

代码语言:javascript
运行
复制
-(void)buttonTapped:(UIButton *)sender
{
  NSUInteger tag = [sender tag];
  UIButton *aButton = buttons[tag];
  [aButton setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22152999

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档