如何禁用多个按钮?

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 提交多个表单 - 禁用表单按钮

当 1 个或多个 TextBox 字段为空时禁用按钮

jquery bootstrap Validation:多个输入值的总和,如果不等于其他输入字段,则禁用提交按钮

如何根据 mfc 中的列表控件选择禁用按钮