我有例如2UIButton
我知道如何隐藏每一个:
button1.hidden = 1;
button2.hidden = 1;
有没有办法一次隐藏这两个按钮?(例如[button1, button2].hidden = 1
:)
谢谢
编辑:数组样式有什么办法吗?
例如:
array *buttons = [button1, button2 ...] ;
buttons[0,3,5,10].hidden = 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;
}
}
创建一个函数来做到这一点:
- (void)buttonAction
{
for (UIButton *button in [self.view subviews])
{
if (button.hidden == YES)
button.hidden = NO;
else
button.hidden = YES;
}
}
嗯,这很棘手,但根据您的要求,有一个替代解决方案。
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;
}
可以这样做
button1.hidden = button2.hidden = YES;
但是,如果您可以创建一个可以帮助您的方法,例如
- (void)allButtonHidden:(BOOL)value {
button1.hidden = value;
button2.hidden = value;
}
并称之为
[self allButtonHidden:YES];
如果您有一系列按钮,例如:
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 设置父视图框架。(选择对您来说更容易的:即创建按钮、状态数组等或创建父视图并正确定位)