如何一次删除多个UIButton的背景图像?

时间:2012-06-07 18:22:45

标签: iphone objective-c ios uibutton background-image

我在我的应用程序中使用了20个UIButton。我在click事件中设置了所有这些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,我希望当玩家点击这三个UIButton中的一个时,所有以前设置的背景图像都会从UIButtons中移除。任何人都可以指导我们如何做到这一点。感谢提前。

4 个答案:

答案 0 :(得分:5)

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

或者如果您要删除图片:

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

答案 1 :(得分:2)

创建时,将所有按钮放在NSArray或NSMutableArray中。然后使用for-in循环或简单的for循环来更改所有循环的背景。

答案 2 :(得分:1)

执行此操作的最佳方法可能是动态创建每个按钮。将每个按钮信息存储到NSMutableArray中,然后执行for循环以删除图像。

 [currentButton setBackgroundImage:nil forState:UIControlStateNormal];

会删除按钮的图像。如果没有看到按钮存储在数组中的方式,很难帮助你。

答案 3 :(得分:1)

根据我的理解,你有20个按钮,其中3个按钮为其他按钮删除了图像。

如果控制此功能的3位于数组中,我建议您将其删除,因为遍历您的按钮数组也会从3 main按钮中删除图像。

或者,您应该使用tag来区分3个主要按钮。你的按钮动作看起来应该是这样的。

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

       }


}

我可能误解了你的需要,但这就是我想出来的。希望它有所帮助!