【问题标题】:Manually setting a UIButton state手动设置 UIButton 状态
【发布时间】:2010-09-29 03:23:11
【问题描述】:

UIButton 使用 + buttonWithType:

我需要弄清楚的是如何手动更改按钮状态。有时我需要将其设置为“禁用”。

我通读了UIButton 文档,但似乎找不到任何关于手动设置按钮状态的信息。

任何想法将不胜感激。

【问题讨论】:

标签: ios objective-c iphone cocoa-touch uibutton


【解决方案1】:

你试过button.enabled = NO;吗?

Swift 5.0

button.isEnabled = false

【讨论】:

  • 我想知道为什么 button.isEnabled 在 button.enabled 工作时不可写
  • if (![button isEnabled]) { button.enabled = YES; } 对我有用。
【解决方案2】:

还有状态:

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

【讨论】:

    【解决方案3】:

    目标 C:

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

    斯威夫特 4:

    button.isSelected = true 
    button.isEnabled = true
    

    你也可以使用:(swift 4)

     if (button.state == .selected) {
       //do something
     }
    

    【讨论】:

      【解决方案4】:

      您可以手动设置 UIButton 的状态。

      UIButton *btnCheck=[UIButton buttonWithType:UIButtonTypeCustom];
      
      if(btncheck isselected])
      {
          btncheck.selected=FALSE;
      }
      else
      {
          btncheck.selected=TRUE;
      }
      

      您可以根据需要对 UIButton 进行操作,例如在 UIButton 被选中和未选中时执行一些操作。

      希望这对你有帮助....

      【讨论】:

        【解决方案5】:

        对于 Swift 3,您可以使用

        button.isSelected = true

        【讨论】:

          【解决方案6】:

          对于到达这里希望更改按钮“状态”(而不是“启用”)的任何人。 Stephen 是正确的“这个属性是只读的——没有对应的 setter 方法。”

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

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

          【讨论】:

            【解决方案7】:

            为了适应在选择按钮时设置不同外观的需要,请设置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
            }
            

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2011-08-01
              • 1970-01-01
              • 2021-02-07
              • 2015-09-12
              • 2011-11-05
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多