以编程方式禁用UIButton

时间:2013-10-14 14:33:44

标签: ios objective-c uibutton

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

我的.h文件中有一个UIButton delared如下:

   IBOutlet UIButton *myBtn;

我已在Interface Builder中为此按钮设置了一个引用插座。

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

[myBtn setEnabled: NO];

myBtn.enabled = NO;

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

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

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

5 个答案:

答案 0 :(得分:8)

对我来说似乎没问题。你是合成按钮吗?尝试

self.myBtn.enabled = NO;

答案 1 :(得分:5)

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

<style>
body {
    font-size: 16px;
    color: white;
    padding: 20px;
}

.about-btn {
    background: #0069a6;
    width: 135px;
    height: 35px;
    text-align: center;
    padding-top: 20px;
}
.about-wrapper {
    background: #0069a6;
    box-shadow: 0 20px 80px 0 rgba(0, 0, 0, .45);
    position: absolute;
    bottom: 130px;
    height: 200px;
    width: 500px;
    display: none;
    flex-direction: column;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
}
.about {
    width: 80%;
    height: 50%;
    float: left;
    text-align: justify;
}
.about-close {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 30px;
    height: 30px; 
}
</style>

<div class="about-btn">
  CLICK ME
</div>

<div class="about-wrapper">
  <div class="about-close">
    <span class="about-icon">X</span>
  </div>
  <div class="about">
    Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent a auctor turpis. Aenean eleifend augue eget ex laoreet, eget cursus ante lobortis. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent dapibus enim nec nunc bibendum, quis consequat urna laoreet. 
  </div>
</div>

<script>
$('.about-btn').on('click', function(){
  $('.about-wrapper').css("display", "flex").hide().fadeToggle();
})

$('.about-close').on('click', function() {
    $('.about-wrapper').fadeOut();
});
</script>

答案 2 :(得分:2)

您应该将按钮设置为IBOutlet。

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

这样您就可以在故事板中连接该按钮。这可能是你的问题。

然后调用此方法禁用。

[_myBtn setEnabled:NO];

答案 3 :(得分:1)

试试这个..

.h

@property(nonatomic,retain)UIButton *myBtn;

.m

@synthesize myBtn;

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

答案 4 :(得分:1)

如果您正在寻找快速代码:

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