-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

ボタンをクリックしたときにこれを行う方法はたくさんありますが、最良の方法の 2 つは、それをswitch statementlikeにすることです。

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

全体が 1 行にまとめられていることに注意してください。これにより、読みやすく効率的になります。

を使用することもできelse if statementますが、何百もある場合は、1 行の方法をお勧めします。

お役に立てれば

于 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 に答える