我有例如2 UIButton
我知道如何隐藏每一个:
button1.hidden = 1;
button2.hidden = 1;
有没有办法一次隐藏这两个按钮? (例如:[button1, button2].hidden = 1
)
由于
编辑:任何方式都是数组样式?
例如:
array *buttons = [button1, button2 ...] ;
buttons[0,3,5,10].hidden = 1;
答案 0 :(得分:1)
您可以简单地使用:
for (UIButton *btn in [self.view subviews]) {
btn.hidden = YES;
}
或者您可以按条件找到按钮:
for (UIButton *btn in [self.view subviews]) {
if ([btn tag]<=2) {
btn.hidden = YES;
}
}
答案 1 :(得分:1)
创建一个函数来执行此操作:
- (void)buttonAction
{
for (UIButton *button in [self.view subviews])
{
if (button.hidden == YES)
button.hidden = NO;
else
button.hidden = YES;
}
}
答案 2 :(得分:0)
可以这样做
button1.hidden = button2.hidden = YES;
但是,如果你能创造一种方法,这将有助于你,例如
- (void)allButtonHidden:(BOOL)value {
button1.hidden = value;
button2.hidden = value;
}
并将其命名为
[self allButtonHidden:YES];
答案 3 :(得分:0)
嗯,这很棘手,但根据您的要求,还有另一种解决方案。
1)为每个按钮设置标签
[button1 setTag:1];
[button2 setTag:2];
...
...
2)找到带有标签的按钮对象(可以使用循环运行)
for(int i=0;i<numberOfButton;i++)
{
UIButton *targetButton = (UIButton *)[self.view viewWithTag:i];
targetButton.hidden = 1;
}
答案 4 :(得分:0)
如果您有一系列按钮,例如:
NSArray *buttonsArray = @[bt1,bt2,bt3,bt4];
和一个与按钮状态对应的bool值数组:
NSArray *stateArray = [@YES,@NO,@NO,@YES];
然后你可以:
for (UIButton *bt in buttonsArray){
bt.hidden = [[stateArray objectAtIndex:[buttonsArray indexOfObject:bt]] boolValue];
}
或更高效的:
for(int index=0; index<buttonsArray.count; index++){
[[buttonsArray objectAtIndex:index] setHidden:[[stateArray objectAtIndex:index] boolValue]];
}
或更干净,可读的:
for(int index=0;index<buttonsArray.count; index++){
UIButton *bt = [buttonsArray objectAtIndex:index];
BOOL *state = [[stateArray objectAtIndex:index] boolValue];
bt.hidden=state;
}
最简单的是(理论上)@adali给出的注释,将其添加到父视图然后隐藏父视图。但是,您应该适当地创建父视图,并根据您的UI设置父视图框架。 (选择更容易的方法:即创建按钮,状态数组等或创建父视图并正确定位)