【问题标题】:Hide more than one element隐藏多个元素
【发布时间】:2013-03-11 08:25:07
【问题描述】:

我有例如 2 个UIButton

我知道如何隐藏每一个:

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

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

谢谢

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

例如:

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

【问题讨论】:

  • 这与使用一两行的用户有什么不同吗?
  • 不,但是我有很多按钮可以设置隐藏或不隐藏...所以我正在寻找将其放入数组并将元素隐藏在一行中的提示。
  • 把它们放在同一个父视图上,然后隐藏父视图

标签: iphone xcode sdk


【解决方案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;

    }
}

【讨论】:

    【解决方案2】:

    创建一个函数来完成它:

    - (void)buttonAction
    {
        for (UIButton *button in [self.view subviews])
        {
            if (button.hidden == YES)
                 button.hidden = NO;
            else
                 button.hidden = YES;
         }
    }
    

    【讨论】:

      【解决方案3】:

      如果您有一组按钮,例如:

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

      【讨论】:

      • 正是我要找的!!谢谢!!
      【解决方案4】:

      可以这样做

      button1.hidden = button2.hidden = YES;
      

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

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

      然后调用它

      [self allButtonHidden:YES];
      

      【讨论】:

      • 谢谢,如果 button1.hidden = 0 和 button2.hidden = 1 ??像这样向右的任何方式: [button1, button2].hidden = [0,1] ?
      • button1.hidden = !button2.hidden = YES;
      • 嘿嘿...是的,但是数组书写样式没有办法吗?像数组 *buttons = [button1, button2 ...] ;按钮[0,3,5,10].hidden = 1 ... ?
      • 是的,没有您要查找的语法。
      【解决方案5】:

      嗯,这很棘手,但根据您的要求,有一个替代解决方案。

      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;
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-10
        • 1970-01-01
        • 2023-03-22
        • 2023-03-08
        • 2017-06-28
        • 2015-12-04
        • 2015-02-28
        • 1970-01-01
        相关资源
        最近更新 更多