【问题标题】:Disable UIButton programmatically以编程方式禁用 UIButton
【发布时间】:2013-10-14 14:33:43
【问题描述】:

我很困惑为什么这段代码不起作用。我有一个登录按钮,我想在用户未登录时禁用它。

我的 .h 文件中有一个 UIButton,如下所示:

   IBOutlet UIButton *myBtn;

我已经在 Interface Builder 中为这个按钮设置了一个引用出口。

在我的 .m 文件中,我尝试过:

[myBtn setEnabled: NO];

myBtn.enabled = NO;

但是这些都没有禁用我所在的条件语句中的按钮。(我想在用户成功登录时禁用登录按钮)

我可以在同一屏幕上使用另外两个按钮来执行此操作,所以我知道代码是正确的。我没有抛出任何错误,所以我认为该对象存在。在 XCode 中对 myBtn 的引用也会改变颜色,因此它似乎是一个有效的引用。

我一定错过了什么。我在这里做错了什么? (我是一名 Windows 开发人员,在 Objective-C 方面相对较新)

【问题讨论】:

  • 在您的 .h 文件中,它应该是 IBOutlet UIButton *myBtn。需要一个指针。但是我认为您可能只是出于提问目的而将其缩短。你在哪里声明的?作为财产?如果是,则需要综合。
  • 啊,忘了星号(我在另一台电脑上打字)...
  • 在尝试禁用该按钮之前在该行中添加NSAssert(myBtn, @"Button is nil!");。如果您看到异常 myBtn 为 nil 并且您没有将其连接到实际的 UIButton 实例。

标签: ios objective-c uibutton


【解决方案1】:

我觉得没问题。您在合成按钮吗?试试

self.myBtn.enabled = NO;

【讨论】:

    【解决方案2】:

    如果您正在寻找 Swift3 解决方案

    var myBtn = UIButton()
    myBtn.isEnabled = true
    

    【讨论】:

      【解决方案3】:

      您应该将按钮设置为 IBOutlet。

      @property (weak, nonatomic) IBOutlet UIButton *myBtn;
      

      这样您就可以在情节提要中连接该按钮。这可能是您的问题。

      然后调用它来禁用。

      [_myBtn setEnabled:NO];
      

      【讨论】:

        【解决方案4】:

        试试这个..

        .h

        @property(nonatomic,retain)UIButton *myBtn;
        

        .m

        @synthesize myBtn;
        

        然后,将您的 [myBtn setEnabled: NO]; 代码替换为 [self.myBtn setEnabled: NO]; 代码。

        【讨论】:

          【解决方案5】:

          如果您正在寻找 swift 代码:

          var button = UIButton()
          button.enabled = false //disable the button
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2012-02-13
            • 2015-02-27
            • 2013-02-09
            • 2011-08-11
            • 2010-10-15
            • 2011-12-27
            • 2019-10-09
            相关资源
            最近更新 更多