-2

UIButtons在我的应用程序中创建了数百个动态。在创建这些时UIButtons,我给每个人一个标签。我想要做的是能够更改UIButton点击时的背景图像。如果我有一个UIButton带有标签的标签,我该如何更改它的背景图像UIButton

4

6 回答 6

1

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

 -(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];

    }

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

希望能帮助到你。

于 2012-12-21T11:14:41.453 回答
1

当你点击一个按钮时,有很多方法可以做到这一点,但其中两种最好的方法是把它变成switch statement这样

- (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 statement但如果你有数百个,我会推荐单行方式。

希望这可以帮助

于 2012-12-21T11:40:46.250 回答
0

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

[btn setBackgroundImage:(UIImage *) forState:(UIControlState)]

你也应该通过这个链接

于 2012-12-21T11:14:54.030 回答
0
-(IBAction)btnclicked:(id)sender

    {

   int tag=sender.tag;

  UIImage * newImage=[UIImage imageNamed:[NSString stringWithFormat:@"%d.png",tag]];
  [sender setBackgroundImage:newImage forState:UIControlStateNormal];

   }
于 2012-12-21T11:15:10.770 回答
0
///This bellow line for Normal Image with button tag just put image with tag and add Normal.
         [yourButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%dNormal.png",btnGo.tag]] forState:UIControlStateNormal];

///This bellow line for UIControlStateHighlighted Image with button tag just put image with tag and add Highlited.
        [yourButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%dHighlited.png",btnGo.tag]] forState:UIControlStateHighlighted];

///This bellow line for UIControlStateSelected Image with button tag just put image with tag and add Selected.

        [yourButton setBackgroundImage:[UIImage imageNamed:[NSString stringWithFormat:@"%dSelected.png",btnGo.tag]] forState:UIControlStateSelected];

并在您的按钮单击方法中将其设置为选定的..

对于 EX:

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

}
于 2012-12-21T11:15:26.587 回答
-1

尝试这个

if(photo.tag==TagNum) [photo setBackgroundImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];
于 2012-12-21T11:13:34.430 回答