如何限制button点击
我有一个这样的VC
对于我已经embeddedUIButtons的checkbox,我点击更改他们的图像。 这是我的代码
@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,他无法select其他选项,同样,如果他点击趋势图,他将无法select任何其他。 我将如何做到这一点?
乌萨马我已经实现了一个简单的button行动,所有这些button可能会完成您的需要。 这是一步一步的实施 –
首先 ,声明这些variables –
var buttonSelected:Bool = false var selectedButton : UIButton?
其次 ,为所有button添加一个@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 previous selected button //Do your stuff } } else{ buttonSelected = true selectedButton = sender sender.setImage(UIImage.init(named: "checkmark"), for: UIControlState.normal) } }
希望它能帮助你开始。
使其他button在特定情况下被禁用。 isUserInteractionEnabled = false
你可以将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 } }