在单个按钮单击中隐藏多个 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=NO
、button2.hidden=NO
等。但是我的按钮 1 到 4 映射到单个 btn1to4 方法。我应该如何在我的 btnFive 方法中编写代码来一次隐藏/取消隐藏所有 4 个按钮?
【问题讨论】:
当您说按钮 1 到 4 映射到-(IBAction)btn1to4:(UIButton *)sender
时,这并不重要:它只是一个事件处理程序。您可以为您的按钮创建单独的IBOutlet
s,或创建一个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的主要内容,如果未能解决你的问题,请参考以下文章
Blazor - 如何使用 ICommand 在按钮单击中执行表单提交
在自定义按钮单击中播放 iframe 内的 youtube 视频