2013-03-11 4 views
0

У меня есть, например, 2 UIButtonСкрыть более одного элемента

Я знаю, как скрыть каждый один:

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

Есть ли способ, чтобы скрыть это 2 кнопки в одно время? (Например: [button1, button2].hidden = 1)

Благодаря

редактировать: любой путь стиль массив?

например:

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

Разве это отличается от пользователя одной или двумя? –

+0

нет, но у меня есть много кнопок для скрытия или нет ... поэтому я ищу совет, чтобы поместить это в массив и скрыть элементы в одной строке. –

+1

поместите их на одно и то же родительское представление, затем скройте родительский вид – adali

ответ

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, чтобы добавить его к родительскому представлению и затем скройте родительский вид. Но тогда вы должны соответствующим образом создать родительский вид и установить кадр родительских представлений в соответствии с вашим пользовательским интерфейсом. (Выберите то, что вам легче: i.e создание кнопок, массив состояний или создание родительского представления и правильное позиционирование)

+0

Именно то, что я ищу! Благодаря !! –

0

Может сделать как этот

button1.hidden = button2.hidden = YES; 

Но если вы можете создать метод, который делает это поможет вам, например,

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

и называют его

[self allButtonHidden:YES]; 
+3

О, gawd, thats awful .. – Rob

+0

Спасибо, и если button1.hidden = 0 и button2.hidden = 1 ?? любой способ сделать так: [button1, button2] .hidden = [0,1]? –

+0

'button1.hidden =! Button2.hidden = YES;' –

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

Создать функцию сделайте это:

- (void)buttonAction 
{ 
    for (UIButton *button in [self.view subviews]) 
    { 
     if (button.hidden == YES) 
      button.hidden = NO; 
     else 
      button.hidden = YES; 
    } 
} 
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; 
} 
Смежные вопросы