如何限制按钮单击

时间:2017-09-22 09:46:22

标签: ios swift3 uibutton xcode8 ios10

我有一个像这样的VC

enter image description here

对于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他无法选择其余部分,同样如果他点击趋势他无法选择任何其他。我该怎么做?

3 个答案:

答案 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