【问题标题】: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 更新时运行它。
最终的结果是,