Objective c 如何更改UIButton的背景图像?

Objective c 如何更改UIButton的背景图像?,objective-c,uibutton,Objective C,Uibutton,我正在我的应用程序中创建数百个动态ui按钮。在创建这些ui按钮时,我给每个按钮都添加了一个标签。 我想做的是能够在单击时更改ui按钮的背景图像。 如果我有一个带有标签的ui按钮,那么如何更改ui按钮的背景图像?试试这个 if(photo.tag==TagNum) [photo setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal]; 您可以按发件人标记更改按钮图像,如: -(IBA

我正在我的应用程序中创建数百个动态
ui按钮。在创建这些
ui按钮时,我给每个按钮都添加了一个标签。
我想做的是能够在单击时更改
ui按钮的背景图像。
如果我有一个带有标签的
ui按钮,那么如何更改
ui按钮的背景图像?

试试这个

if(photo.tag==TagNum) [photo setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];

您可以按发件人标记更改按钮图像,如:

 -(IBAction)changeImage:(id)sender

    {
  [sender setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%d.png",[sender tag]]] forState:UIControlStateNormal];

    }
如果数组中有所有图像名称,则可以执行以下操作

-(IBAction)changeImage:(id)sender

    {
  [sender setImage:[UIImage imageNamed:[NSString stringWithFormat:@"%@.png",[MyImagearray ObjectAtindex:[sender tag]]]] forState:UIControlStateNormal];

    }
如果这不是您想要的,那么请正确指定您的问题


希望有帮助。

您可以使用此方法更改按钮的背景图像:

[btn setBackgroundImage:(UIImage *) forState:(UIControlState)]
你也应该通过

在你点击按钮的方法中,只需将其设置为选中的

对于EX:

-(IBAction)btnClicked:(id)sender{
       UIButton *btn = (UIButton*)sender;
       [btn setSelected:YES];

}

当你点击一个按钮时,有很多方法可以做到这一点,但最好的两种方法是将它放入
开关语句中,就像这样

- (IBAction)shouldChangeImage:(id)sender
  {
       switch([sender tag]) {
             case 1:
                   [sender setBackgroundImage:[UIImage imageNamed:@"myFirstImage.png"] forState:UIControlStateNormal];
                   break;
             case 2:
                   [sender setBackgroundImage:[UIImage imageNamed:@"mySecondImage.png"] forState:UIControlStateNormal];
                   break;

             // And so on for each button tag and then have a default for those that are not listed.

             default:
                   [sender setBackgroundImage:[UIImage imageNamed:@"myDefaultImage.png"] forState:UIControlStateNormal];
                   break;
       }
  }
这对于数百个按钮来说并不好,但仍然可以工作。如果所有图像的名称完全不同,这也是最好的方法,但是如果您将图像命名为相同的名称,并在它们前面加上标记号,则会创建更高效的代码,并且更易于阅读。你会这样做的

- (IBAction)shouldChangeImage:(id)sender
  {
      [sender setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"myImage-%d.png",[sender tag]]] forState:UIControlStateNormal];
  }
请注意,整个内容都在一行中,因此更容易阅读,也更高效

您也可以使用
else if语句
,但如果您有数百个语句,我建议使用单行方式


希望这有帮助

这段代码给出警告“Class-method'+viewWithTag:'notfound(返回类型默认为'id')”。如果警告已解决,这段代码可以帮助我。这是什么照片?请提供更多信息。非常短,并没有真正说明发生了什么。照片是用来比较标签的按钮。您只需拍摄
[sender tag]
并将其放置在tagnum所在的位置,就可以将其缩短得更多。那么整个事情都在一行上。如果我在int变量中有标记,我怎么办??例如,我有“int x;”,但我给了x“x=10”一个值;现在我如何更改标签值为“x”的按钮的背景图像?…使用我的第一个方法
[sender setImage:[UIImage ImageName:[NSString stringWithFormat:@”%d.png“,[sender tag]]]for状态:UIControlStateNormal]
@Vishal此代码用于整个状态,也用于带有单独图像的整个按钮也在此处为图像添加了静态名称,但其工作请参见..他正在尝试添加100个或更多按钮,因此切换语句在这种情况下不太合适。@SibaPrasadHota同意添加,只是作为选项而已,然后他可以决定使用哪一个按钮。我总是喜欢给出一些方法,让人们有一个最适合他们的选择。不过我还是推荐短一点的方式。在提问之前,你应该做一点调查,事实上有数百个博客在讨论这个问题。
- (IBAction)shouldChangeImage:(id)sender
  {
       switch([sender tag]) {
             case 1:
                   [sender setBackgroundImage:[UIImage imageNamed:@"myFirstImage.png"] forState:UIControlStateNormal];
                   break;
             case 2:
                   [sender setBackgroundImage:[UIImage imageNamed:@"mySecondImage.png"] forState:UIControlStateNormal];
                   break;

             // And so on for each button tag and then have a default for those that are not listed.

             default:
                   [sender setBackgroundImage:[UIImage imageNamed:@"myDefaultImage.png"] forState:UIControlStateNormal];
                   break;
       }
  }
- (IBAction)shouldChangeImage:(id)sender
  {
      [sender setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"myImage-%d.png",[sender tag]]] forState:UIControlStateNormal];
  }