如何限制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 } }