单击按钮隐藏多个UIButton

时间:2013-08-16 10:34:19

标签: ios objective-c uibutton

我的xib中有5个按钮,按钮1到4被映射到

-(IBAction)btn1to4:(UIButton *)sender; 

按钮5映射到

-(IBAction)btnFive:(id)sender;

最初所有4个按钮都被隐藏,只有按钮5可见,我需要的是当我点击按钮5时,所有4个按钮都会出现,当我再次点击按钮5时,它们应该消失。对于单个按钮,我可以将按钮5中的代码编写为button1.hidden=NObutton2.hidden=NO并且很快。但是我的按钮1到4被映射到单个btn1to4方法。我应该如何在我的btnFive方法中编码一次隐藏/取消隐藏所有4个按钮?

4 个答案:

答案 0 :(得分:2)

将按钮1到4添加到界面构建器中的IBOutletCollection。添加属性

@property (nonatomic, strong) IBOutletCollection(UIButton) NSArray *buttons1_4;

然后拖动按钮1..4。 Here is an answer explaining how to do it step-by-step

现在,您可以使用循环操作该集合中的所有按钮,而不是单独引用它们:

-(void)flipButtonsVisibility:(UIButton*)sender {
    for (UIButton *btn in buttons1_4) {
        btn.hidden = !btn.hidden;
    }
}

答案 1 :(得分:1)

button5 添加标记,例如

button5.tag = 101;

按钮5 IBAction中将参数中的id更改为UIButton *,例如

-(IBAction)btnFive:(UIButton *)sender

并编写以下代码

-(IBAction)btnFive:(UIButton *)sender
{
    if(sender.tag == 101)
    {
      self.btn1.hidden = YES;
      self.btn2.hidden = YES;
      self.btn3.hidden = YES;
      self.btn4.hidden = YES;
      sender.tag = 102;
    }
    else
    {
      self.btn1.hidden = NO;
      self.btn2.hidden = NO;
      self.btn3.hidden = NO;
      self.btn4.hidden = NO;

      sender.tag = 101;
    }
}

答案 2 :(得分:1)

在您的.h文件中

int a;

的.m

-(void)viewDidLoad
{
 a=0;
}

点击按钮

-(IBAction)btnFive:(id)sender


{
    if(a==0)
    {
      button1.hidden = YES;
      button2.hidden = YES;
      button3.hidden = YES;
      button4.hidden = YES;
      a = 1;

    }
    else
    {
      button1.hidden = NO;
      button2.hidden = NO;
      button3.hidden = NO;
      button4.hidden = NO;
      a = 0;
    }
}

答案 3 :(得分:0)

在你的 - (IBAction)btnFive:(id)发件人中,首先检查任何一个按钮(来自1-4)隐藏属性&在条件上做相反的事情。请在下面找到样本 -

-(IBAction)btnFive:(id)sender {    
if(btn4.hidden==false){
          btn1.hidden=true;
          btn2.hidden=true;
          btn3.hidden=true;
          btn5.hidden=true;
    }else{
         btn1.hidden=false;
         btn2.hidden=false;
         btn3.hidden=false;
         btn5.hidden=false;
    }
}

尝试编写较少数量的行代码并尝试编写有效行。

如果您需要更多帮助,请告诉我们。如果您觉得这个答案合适,请投票给我。 所有最好的