隐藏多个元素

时间:2013-03-11 08:25:08

标签: iphone xcode sdk

我有例如2 UIButton

我知道如何隐藏每一个:

button1.hidden = 1;
button2.hidden = 1;

有没有办法一次隐藏这两个按钮? (例如:[button1, button2].hidden = 1

由于

编辑:任何方式都是数组样式?

例如:

array *buttons = [button1, button2 ...] ;   
buttons[0,3,5,10].hidden = 1;

5 个答案:

答案 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设置父视图框架。 (选择更容易的方法:即创建按钮,状态数组等或创建父视图并正确定位)