【问题标题】:UIButton is disabled - SwiftUIButton 被禁用 - Swift
【发布时间】:2021-09-20 10:19:13
【问题描述】:

我是 swift 编程新手,我正在尝试禁用保存按钮,直到选择了所有其他必需的按钮,但是当我尝试使用 button.isEnabled = false 执行此操作时,即使在所有按钮都被选中。这是一个示例代码:

func disableButton () {
    if firstButton.isSelected && rightButton.isSelected  {
        saveButton.isEnabled = true
    } else {
        saveButton.isEnabled = false
    }
}

当我删除最后一行时,保存按钮可以工作,但当我把它放回去时,即使选择了其他两个按钮,它也会被禁用。

【问题讨论】:

    标签: ios swift xcode mobile-development


    【解决方案1】:

    假设您使用了Storyboard,您必须将两个按钮链接到@IBActions,并在这些@IBAction 方法中操作isSelected 属性。参考下面的例子。

    注意 - 阅读 cmets

    class ViewController: UIViewController {
    
        // 2 buttons that we will set the isSelected property
        @IBOutlet weak var button1: UIButton!
        @IBOutlet weak var button2: UIButton!
    
        // Button to disable/enable
        @IBOutlet weak var finalButton: UIButton!
    
        override func viewDidLoad() {
            super.viewDidLoad()
            finalButton.isEnabled = false // setting the button as disabled
        }
    
        /// This is the function triggered when you click on the "button1"
        @IBAction func didPressButton1(_ sender: UIButton) {
            // Here we will set the isSelected property of "sender" parameter, which is the button that calls this function. That is button 1
            sender.isSelected = sender.isSelected ? false : true
            //calling this function to make any updates to the UI if needed
            disableButton()
        }
    
        /// This is the function triggered when you click on the "button2"
        @IBAction func didPressButton2(_ sender: UIButton) {
            // Here we will set the isSelected property of "sender" parameter, which is the button that calls this function. That is button2
            sender.isSelected = sender.isSelected ? false : true
            //calling this function to make any updates to the UI if needed
            disableButton()
        }
    
        func disableButton () {
            if button1.isSelected && button2.isSelected  {
                finalButton.isEnabled = true
            } else {
                finalButton.isEnabled = false
            }
        }
    }
    

    这里发生的是,您将在函数本身中设置调用该函数的按钮的isSelected 属性,并在每次调用disableButton() 函数以进行UI 更新时运行它。 最终的结果是,

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 2016-09-01
      • 1970-01-01
      • 2019-07-24
      • 2016-06-10
      • 2011-09-06
      相关资源
      最近更新 更多