0

我有例如2UIButton

我知道如何隐藏每一个:

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

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

谢谢

编辑:数组样式有什么办法吗?

例如:

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

5 回答 5

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;

    }
}
于 2013-03-11T08:35:04.230 回答
1

创建一个函数来做到这一点:

- (void)buttonAction
{
    for (UIButton *button in [self.view subviews])
    {
        if (button.hidden == YES)
             button.hidden = NO;
        else
             button.hidden = YES;
     }
}
于 2013-03-11T08:39:03.637 回答
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;
}
于 2013-03-11T08:49:45.797 回答
0

可以这样做

button1.hidden = button2.hidden = YES;

但是,如果您可以创建一个可以帮助您的方法,例如

- (void)allButtonHidden:(BOOL)value {
    button1.hidden = value;
    button2.hidden = value;
}

并称之为

[self allButtonHidden:YES];
于 2013-03-11T08:28:40.123 回答
0

如果您有一系列按钮,例如:

NSArray *buttonsArray = @[bt1,bt2,bt3,bt4];

以及对应于按钮状态的布尔值数组:

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

于 2013-03-11T09:06:51.920 回答