1

私はアプリケーションで20個のUIButtonを使用しています。クリックイベントでこれらすべてのUIButtonの背景画像を設定します。これらすべてのUIButtonはNSMutableArrayに保存されます。ここにコードがあります。

             saveBtn = [[NSMutableArray alloc] init];
             for (int i=0; i<20; i++) {
             UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
             btn.frame = CGRectMake(spacex, spacey, 30.0, 30.0);
             idx = arc4random()%[arr count];
             NSString* titre1 = [arr objectAtIndex:idx];
             [btn setTitle:titre1 forState:UIControlStateNormal];   
             spacex = spacex + 30;
             [saveBtn addObject:btn];
             [self.view addSubview:btn];
          }

ここで成功したのは私のコードです。

 UIButton *currentButton = (UIButton *)sender;
 UIImage * imgNormal = [UIImage imageNamed:@"subtabButton.png"];
 [currentButton setBackgroundImage:imgNormal forState:UIControlStateNormal];
 [currentButton setTitle:currentButton.titleLabel.text forState:UIControlStateNormal];

しかし、これらの20個のUIButtonの間に3個のUIButtonがあります。プレーヤーがこれらの3個のUIButtonのいずれかをクリックすると、以前に設定されたすべての背景画像がUIButtonsから削除されます。

4

4 に答える 4

5
for (UIButton *btn in yourArrayOfButtons)
{
   [btn setBackgroundImage:[UIImage imageNamed:@"nameofmyimage"] forState:UIControlStateNormal];
}

または、画像を削除する場合:

for (UIButton *btn in yourArrayOfButtons)
{
   [btn setBackgroundImage:nil forState:UIControlStateNormal];
}
于 2012-06-07T18:31:34.790 に答える
2

ボタンの作成時に、すべてのボタンを NSArray または NSMutableArray に配置します。次に、for-in ループまたは単純な for ループを使用して、それらすべての背景を変更します。

于 2012-06-07T18:25:16.067 に答える
1

おそらくこれを行う最善の方法は、各ボタンを動的に作成することです。各ボタンの情報を NSMutableArray に保存してから、for ループを実行して画像を削除します。

 [currentButton setBackgroundImage:nil forState:UIControlStateNormal];

ボタンの画像を削除します。ボタンが配列にどのように格納されているかを確認せずに、あなたを助けるのは難しいです。

于 2012-06-07T18:25:56.753 に答える
1

私の理解では、20 個のボタンがあり、そのうちの 3 個のボタンが他の 17 個の画像を削除します。

この機能を制御する 3 つが配列内にある場合は、ボタンの配列をループすると 3 つのmainボタンから画像も削除されるため、それらを削除することをお勧めします。

tagまたは、3 つのメイン ボタンを区別するためにa を使用する必要があります。ボタンのアクションは次のようになります。

-(void)buttonPressed:(id)sender {

      UIButton *button = (UIButton*)sender;

      if(button.tag == 1001 || button.tag == 1002 || button.tag == 1003) {

             for (UIButton *btn in buttonArray) {
                [btn setBackgroundImage:nil forState:UIControlStateNormal];
             }

       }


}

私はあなたの必要性を誤解しているかもしれませんが、これが私が思いついたものです。それが役に立てば幸い !

于 2012-06-07T19:20:48.713 に答える