如何禁用多个按钮?
Posted
技术标签:
【中文标题】如何禁用多个按钮?【英文标题】:How can I disable multiple buttons? 【发布时间】:2010-08-15 20:12:58 【问题描述】:我的视图上有 2 个按钮,我想在单击另一个按钮时禁用第一个按钮,并在再次单击该按钮时禁用第二个按钮。
我已尝试使用此代码
if (button1.enable = NO)
button2.enable = NO;
所以我在 NavigationBar 中有一个“+”按钮和 5 个禁用按钮。 当我按下“+”按钮时,我想启用第一个按钮,当我再次按下启用第二个按钮时…… 谢谢
【问题讨论】:
该代码如何禁用任何按钮? 您能提供更多信息吗?很难理解你想在这里问什么...... 【参考方案1】:if (button1.enabled == YES)
button1.enabled = NO;
button2.enabled = YES;
else (button2.enabled == YES)
button2.enabled = NO;
button1.enabled = YES;
这就是你要找的吗?这将是另一个按钮的 IBAction。
【讨论】:
【参考方案2】:button1.enable = YES
应该是button1.enable == YES
更易读的形式:[button1 isEnabled]
【讨论】:
【参考方案3】:你说的是
if (button1.enabled = NO)
你的意思可能是
if (button1.enabled == NO)
=
是赋值运算符,==
是布尔相等运算符。您目前正在做的是将 YES 分配给 button1.enable,这显然启用了 button1。然后,由于 button.enable 为 true,控制进入 if 子句并启用 button2。
编辑:要回答您的新问题(“当我按下“+”按钮时,我想启用第一个按钮,当我再次按下启用第二个按钮时......”),假设您初始化按钮状态某处。在你的@interface 添加一个实例变量
NSArray *buttons;
所以你的接口声明看起来像
@interface YourViewController: UIViewController
IBOutlet UIButton *button1;
IBOutlet UIButton *button2;
IBOutlet UIButton *button3;
IBOutlet UIButton *button4;
IBOutlet UIButton *button5;
NSArray *buttons;
然后像这样初始化buttons
:
-(void)viewDidLoad
[super viewDidLoad];
buttons = [NSArray arrayWithObjects: button1, button2, button3, button4, button5, nil];
[buttons retain];
for (UIButton *each in buttons)
each.enabled = NO;
-(void)viewDidUnload
[buttons release];
[super viewDidUnload];
假设您将 + 按钮的 Touch Up Inside 事件处理程序连接到 plusPressed:
。那么你就有了
-(IBAction)plusPressed: (id) button
for (UIButton *each in buttons)
if (!each.enabled)
each.enabled = YES;
break;
每次调用plusPressed:
,都会启用数组中的下一个按钮。 (我在远离编译器的情况下编写以上内容;可能存在语法错误。)
您也可以将buttons
设为属性。我没有,因为其他班级没有业务访问buttons
。
【讨论】:
谢谢,但是当我添加代码时,我有一个错误“'UIButton' 之前的预期表达式”foreach (UIButton *each in Buttons) 再次感谢 再试一次?我曾有一个 ;我应该写一个 我有一个警告:函数'foreach'的隐式声明 就像我说的:我远离编译器。原来 foreach 循环使用“for”,而不是“foreach”。请重试。 不...,现在当我点击“+”时应用程序崩溃...我没有任何警告或错误...以上是关于如何禁用多个按钮?的主要内容,如果未能解决你的问题,请参考以下文章
Excel VBA,如果一个或多个文本框为空,如何禁用命令按钮
防止使用 angular.js 提交多个表单 - 禁用表单按钮