我使用的是macOS Catalina 10.15.5和Xcode11.5。
我的主故事板上有两个UI按钮,分别是“今天按钮”和“明天按钮”。
我想要的是当‘今天按钮’被按下时,‘明天按钮’被禁用。
此外,如果按下了“明天按钮”,则应禁用“今天按钮”。
我将这些与@IBOutlet连接起来,如下所示。
@IBOutlet weak var todayBtnOutlet: UIButton!
@IBOutlet weak var tmrwBtnOutlet: UIButton!
在viewDidLoad内部,它看起来是这样的。
override func viewDidLoad() {
super.viewDidLoad()
todayBtnOutlet.isEnabled = true
tmrwBtnOutlet.isEnabled = false
}
然后我在view controller类的末尾创建了这些代码。
@IBAction func todayBtn(_ sender: UIButton) {
if tmrwBtnOutlet.isEnabled == true {
tmrwBtnOutlet.isEnabled = false
todayBtnOutlet.isEnabled = true
}
todayBtnOutlet.isEnabled = true
}
@IBAction func tmrwBtn(_ sender: UIButton) {
if todayBtnOutlet.isEnabled == true {
todayBtnOutlet.isEnabled = false
tmrwBtnOutlet.isEnabled = true
}
tmrwBtnOutlet.isEnabled = true
}
我运行模拟器,弹出的第一件事是‘今天按钮’是启用的,‘明天按钮’是禁用的。 但当我点击“明天按钮”时,什么也没发生。
我知道这些代码很愚蠢,但是请你不要客气,因为我对代码世界还是个新手。
我会感激你的回答!
Enabled
属性不是实现所需效果所需的。 您要做的是使用按钮的IsSelected
属性,这是UIButton
的可能状态。 UIbutton
可能处于几种可能状态之一(例如正常
,选定
,突出显示
)。
当您第一次在屏幕上显示按钮时,它通常处于正常
状态(除非您手动更改该行为)。
接下来可以做的是为按钮的不同状态应用不同的样式(应该使用normal
和selected
状态)。 您可以在interface builder(storyboard或xib)中执行此操作,也可以在代码中应用样式:
let button = UIButton()
button.setBackgroundImage(normalStateImage, forState: .normal)
button.setBackgroundImage(selectedStateImage, forState: .selected)
其中NormalStateImage
和SelectedStateImage
是将为这两种状态呈现的UImage
(有关如何使用UIButton
的背景图像/颜色的更多详细信息,请参见如何在突出显示时更改UIButton的背景颜色)。
这样,按钮在按下时仍然会生成事件。