1

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

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

按钮 5 映射到

-(IBAction)btnFive:(id)sender;

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

4

4 回答 4

2

IBOutletCollection在界面生成器中添加按钮 1 到 4 。添加属性

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

并将按钮 1..4 拖到那里。这是一个解释如何逐步完成的答案

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

-(void)flipButtonsVisibility:(UIButton*)sender {
    for (UIButton *btn in buttons1_4) {
        btn.hidden = !btn.hidden;
    }
}
于 2013-08-16T10:42:30.587 回答
1

给你的button5标签,比如

button5.tag = 101;

在你button5 的 IBAction更改idUIButton *in 参数,如

-(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;
    }
}
于 2013-08-16T10:39:56.813 回答
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;
    }
}
于 2013-08-16T10:50:44.553 回答
0

在您的 -(IBAction)btnFive:(id)sender 中,首先检查任何一个按钮(从 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;
    }
}

尝试编写更少的行代码并尝试编写有效的行。

如果您需要更多帮助,请告诉我。如果你觉得这个答案合适,请投票给我。一切顺利

于 2013-08-16T10:46:10.017 回答