我在我的应用程序中使用了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中移除。任何人都可以指导我们如何做到这一点。感谢提前。
答案 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];
}
}
}
我可能误解了你的需要,但这就是我想出来的。希望它有所帮助!