繁体   English   中英

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

[英]iOS: I set my uibuttons with tags. How do I change the specific button image based on its tag?

我有多个按钮阵列,称为按钮。 每个标记。 如何仅基于按钮的标签和标签来更改按钮上的图像。 截至目前,它仅更改最后一个按钮。

    -(void)buttonTapped:(id)sender{

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

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

或者:

for (UIButton *btn in button) {
    if(btn.tag == 1)
    {
        // do something
        break; // don't need to run the rest of the loop
    }
}

如果要使用数组(不应将其称为“按钮”,请对数组使用复数形式)

或更简单的方法:

UIButton *btn = (UIButton *)[self.view viewWithTag:1];

但是,一种更简单的方法是在回调中使用参数(除非那不是您想要的按钮)。 像这样:

-(void)buttonTapped:(id)sender
{
     UIButton *tappedBtn = (UIButton *)sender;
     [tappedBtn setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
}

如果您只想更改被点击的按钮,则应该可以进行以下操作。

   -(void)buttonTapped:(id)sender
   {
     NSLog (@"%i",[sender tag])];
     UIButton *tappedButton = (UIButton *)sender;
     [tappedButton setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
   }

如果要更改其他按钮,则可以使用

[self.view viewWithTag:1000]; //1000 is the tag you assigned

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

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

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

-(void)buttonTapped:(UIButton *)sender
{
  [sender setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
}

请注意,我将发件人的类型更改为UIButton,因此您不必强制转换它。 只要将动作仅连接到按钮,就可以安全地进行操作并使代码更清晰。

正如另一位发帖人所指出的那样,拥有一系列称为“按钮”的按钮是不好的。 我在以下代码中将其重命名为“ buttons”:

如果要使用标签和按钮数组来执行此操作,则可以使用如下代码:

-(void)buttonTapped:(UIButton *)sender
{
  NSUInteger tag = [sender tag];
  UIButton *aButton = buttons[tag];
  [aButton setImage:[UIImage imageNamed:@"button_change.png"] forState:UIControlStateNormal];
}

创建名称为button_change1.pngbutton_change2.png等的图像。

和:

-(void) buttonTapped:(UIButton*)sender
{
    NSString* imageName = [NSString stringWithFormat: @"button_change%ld.png", (long)sender.tag];
    [button setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal];
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM