在单个按钮单击中隐藏多个 UIButton

Posted

技术标签:

【中文标题】在单个按钮单击中隐藏多个 UIButton【英文标题】:Hide Multiple UIButton in single button click 【发布时间】:2013-08-16 10:34:19 【问题描述】:

我的 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 个按钮?

【问题讨论】:

当您说按钮 1 到 4 映射到 -(IBAction)btn1to4:(UIButton *)sender 时,这并不重要:它只是一个事件处理程序。您可以为您的按钮创建单独的IBOutlets,或创建一个IBOutletCollection - 这是在 Cocoa 中管理元素组的首选方式。 【参考方案1】:

将按钮 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;
    

【讨论】:

除此之外,如果我必须相应地更改第 5 个按钮的标题,当我点击显示时,它的标题应该更改为隐藏,反之亦然。我应该如何进行? if(btn.hidden) sender.titleLabel.text=@"显示";似乎不起作用。 @Gamerlegend 查看this question,它解释了如何更改标题。【参考方案2】:

给你的button5标签,比如

button5.tag = 101;

在你button5的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;
    

【讨论】:

没有单独的,btn1, btn2, btn3, btn4, jst单一方法btn1to4。所以 self.btn1to4 将不起作用。还有其他选择吗?? 什么意思没有个体,btn1, btn2, btn3, btn4 ??【参考方案3】:

在您的 .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;
    

【讨论】:

【参考方案4】:

在您的 -(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;
    

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

如果您需要更多帮助,请告诉我。如果你觉得这个答案合适,请投票给我。 万事如意

【讨论】:

以上是关于在单个按钮单击中隐藏多个 UIButton的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Compose 函数的按钮单击中启动 Intent

Blazor - 如何使用 ICommand 在按钮单击中执行表单提交

在自定义按钮单击中播放 iframe 内的 youtube 视频

如何从按钮单击中获取 UITableview cell.textlabel.text 值?

Android在按钮点击中获取位置

Bootstrap multiselect单选按钮选择了多个选项