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 个 UIButtons 之间有 3 个 UIButtons,我希望当玩家单击这三个 UIButtons 中的一个时,所有之前设置的背景图像都将从 UIButtons 中删除。任何人都可以指导我如何做到这一点..thanx 提前。

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按钮中删除图像。

或者,您应该使用 atag来区分 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];
             }

       }


}

我可能误解了您的需求,但这就是我想出的。希望能帮助到你 !

于 2012-06-07T19:20:48.713 回答