【问题标题】:How can I disable multiple buttons?如何禁用多个按钮?
【发布时间】:2010-08-15 20:12:58
【问题描述】:

我的视图上有 2 个按钮,我想在单击另一个按钮时禁用第一个按钮,并在再次单击该按钮时禁用第二个按钮。

我已尝试使用此代码

if (button1.enable = NO) {
    button2.enable = NO;
}

所以我在 NavigationBar 中有一个“+”按钮和 5 个禁用按钮。 当我按下“+”按钮时,我想启用第一个按钮,当我再次按下启用第二个按钮时……
谢谢

【问题讨论】:

  • 该代码如何禁用任何按钮?
  • 您能提供更多信息吗?很难理解你想在这里问什么......

标签: ios objective-c cocoa-touch uibutton


【解决方案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”。请重试。
      • 不...,现在当我点击“+”时应用程序崩溃...我没有任何警告或错误...
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-10
      • 1970-01-01
      • 1970-01-01
      • 2013-08-02
      • 1970-01-01
      • 2015-02-10
      相关资源
      最近更新 更多