如何在插座集合下禁用单个UIButton(按下时)?

时间:2019-05-09 04:27:12

标签: arrays swift uibutton iboutletcollection

我是新手,
本质上,我想做的就是按下UI按钮后,我希望将其禁用。

我知道当单个UIbutton仅链接到插座而不是插座集合时如何禁用UIbutton。

带插座:

我只是列出各个按钮,并在按下时将其禁用

@IBAction func NumButton1(_ sender: UIButton) 

{
        pressButton(outputnumber: "1", with: 1, on: sender)
        button1.isEnabled = false
}

@IBAction func NumButton3(_ sender: UIButton) 

{
        pressButton(outputnumber: "3", with: 3, on: sender)
        button2.isEnabled = false
}

...


@IBAction func NumButton9(_ sender: UIButton) 

{
        pressButton(outputnumber: "9", with: 9, on: sender)
        button3.isEnabled = false
}

具有出口集合:

@IBAction func NumButton(_ sender: UIButton) 

{
        let buttonNumber = buttons.index(of: sender)!

        let randomNumber = buttons.index(of: sender)!

        pressButton(outputnumber: numberDisplayed[buttonNumber], with: numberGuessed[randomNumber], on: sender)

如果我将UIbutton的集合链接到插座集合, 如何在按下任何一个UIbutton时禁用它们?

1 个答案:

答案 0 :(得分:1)

如果您只想禁用单击的按钮,那么您当然可以使用sender.isEnabled = false

如果您希望能够在单击任意按钮时禁用任何按钮,则可以tag每个带有按钮的数字,以便可以从Attributes Inspector(朝底部)中对其进行识别:

enter image description here

因此每个按钮都可以分别标记为0、1、2、3、4等。然后在操作中,您可以参考标记号:

    @IBAction func myButtonPressed(_ sender: UIButton) {
        print("button pressed, with tag: \(sender.tag)")
    }

您可以使用以下标记通过按钮找到任何按钮:

    func findButton(withTag: Int) -> UIButton? {
        return myButtonCollection.first { (btn) -> Bool in
            btn.tag == withTag
        }
    }