我有一个像这样的VC
对于checkBoxes我已经嵌入了UIButtons,我在点击时更改了他们的图像。这是我的代码
@IBOutlet weak var bestSellerButton: UIButton!
@IBOutlet weak var trendingButton: UIButton!
@IBOutlet weak var lowToHighButton: UIButton!
@IBOutlet weak var highToLowButton: UIButton!
var isBoxClicked = Bool()
func updateCheckImageOnClick(button: UIButton) {
if isBoxClicked == true {
isBoxClicked = false
button.setImage(UIImage.init(named: "checkmark"), for: UIControlState.normal)
}
else {
isBoxClicked = true
button.setImage(UIImage(), for: UIControlState.normal)
}
}
@IBAction func clickedBestSellerBtn(_ sender: Any) {
updateCheckImageOnClick(button: bestSellerButton)
}
@IBAction func clickedTrendingBtn(_ sender: Any) {
updateCheckImageOnClick(button: trendingButton)
}
其他两个同样如此。现在,每次点击设置和取消设置时都会正确设置复选标记图像,但我想限制用户,如果他点击畅销书btn他无法选择其余部分,同样如果他点击趋势他无法选择任何其他。我该怎么做?
答案 0 :(得分:2)
Usama我已经为所有可能满足您需求的按钮实施了一个简单的按钮操作。这是一步一步的实施 -
首先,声明这些变量 -
var buttonSelected:Bool = false
var selectedButton : UIButton?
第二次,为所有按钮添加一个@IBAction -
第三次,这是行动方法 -
@IBAction func btnSelection(_ sender: UIButton) {
if(buttonSelected){
if(selectedButton == sender){
buttonSelected = false
selectedButton = nil
sender.setImage(UIImage(), for: UIControlState.normal)
}
else{
// It's not the previously selected button
//Do your stuff
}
}
else{
buttonSelected = true
selectedButton = sender
sender.setImage(UIImage.init(named: "checkmark"), for: UIControlState.normal)
}
}
希望它能帮助你开始。
答案 1 :(得分:0)
您可以将updateCheckImageOnClick(button: UIButton)
重命名为通用名称,以便在内部添加一些逻辑,例如:
func update(button: UIButton) {
isBoxClicked = !isBoxClicked
button.setImage(isBoxClicked ? UIImage(named: "checkmark") : UIImage(), for: UIControlState.normal)
if button == bestSellerButton {
trendingButton.isEnabled = false
lowToHighButton.isEnabled = false
highToLowButton.isEnabled = false
} else if button == trendingButton {
bestSellerButton.isEnabled = false
lowToHighButton.isEnabled = false
highToLowButton.isEnabled = false
} else if button == highToLowButton {
trendingButton.isEnabled = false
lowToHighButton.isEnabled = false
bestSellerButton.isEnabled = false
} else {
bestSellerButton.isEnabled = false
trendingButton.isEnabled = false
highToLowButton.isEnabled = false
}
}
答案 2 :(得分:0)
在特定方案中禁用“其他”按钮。 isUserInteractionEnabled = false