手动设置UIButton状态

20

我使用buttonWithType:创建了一个UIButton按钮。

现在我需要找出如何手动更改按钮的状态。有时我需要将其设置为“禁用”状态。

我阅读了UIButton的文档,但似乎没有找到任何关于手动设置按钮状态的内容。

如果您有任何想法,将不胜感激。


为了补充Ben所说的,可以查看UIControl中的enabled属性:http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIControl_Class/Reference/Reference.html#//apple_ref/occ/instp/UIControl/enabled - Athena
7个回答

49

你尝试过 button.enabled = NO; 吗?

Swift 5.0

button.isEnabled = false

我想知道为什么button.isEnabled不可写,而button.enabled可以工作。 - OMGPOP
如果 (![button isEnabled]) { button.enabled = YES; } 对我有效。 - Sofeda

28

还有这些状态:

   button.highlighted = NO;
   button.selected = NO;

4

Objective C:

button.selected = Yes;
button.highlighted = NO;
button.enabled = Yes;

Swift 4:

button.isSelected = true 
button.isEnabled = true

此外,您还可以使用:(Swift 4)
 if (button.state == .selected) {
   //do something
 }

3
您可以手动设置UIButton的状态。
UIButton *btnCheck=[UIButton buttonWithType:UIButtonTypeCustom];

if(btncheck isselected])
{
    btncheck.selected=FALSE;
}
else
{
    btncheck.selected=TRUE;
}

您可以根据您的需求对UIButton进行操作,例如在选中时执行某些操作,在未选中时执行其他操作。
希望这能帮到您...

2

for Swift 3 you can use

button.isSelected = true


0
为了满足在按钮被选择时设置不同外观的需求,请设置 isSelected = true
以下是一个示例,演示如何在测验游戏环境中设置状态,并根据该状态更改 UIButton 的外观:
if sender.titleLabel?.text == correctAnswer {
    sender.isSelected = true
    // Set title color and image based on 'selected' state.
    sender.setTitleColor(.systemBlue, for: .selected)
    sender.setImage(Utilities.sharedInstance.returnAnswerButtonImage(for: .correctlyAnswered).withRenderingMode(.alwaysOriginal), for: .selected)
    sender.backgroundColor = .white
    sender.tintColor = .systemBlue
    // moveToNextQuestion()
} else {
    sender.isSelected = true
    sender.setTitleColor(.systemBlue, for: .selected)
    sender.setImage(Utilities.sharedInstance.returnAnswerButtonImage(for: .incorrectlyAnswered).withRenderingMode(.alwaysOriginal), for: .selected)
    sender.backgroundColor = .red
    sender.tintColor = .systemBlue
}

0

对于任何想要更改按钮“状态”(而不是“启用”)的人来说,Stephen是正确的,“此属性只读 - 没有相应的setter方法。”

您真正想设置的是按钮单元格的状态。

[[myNSButtonOutlet cell] setState: NSOnState];  //Options NSOnState, NSOffState, NSMixedState

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接