Как отключить отдельную UIButton (при нажатии) под сборкой розетки? - PullRequest
0 голосов
/ 09 мая 2019

Я новичок в Свифте,
По сути, я хочу, чтобы после нажатия кнопки 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)

Если я связал коллекцию кнопок UI с коллекцией розеток, как отключить ЛЮБУЮ кнопку UI при нажатии ЛЮБОГО из них?

1 Ответ

1 голос
/ 09 мая 2019

Если вы просто хотите отключить нажатую кнопку, конечно, вы можете просто использовать sender.isEnabled = false.

Если вы хотите иметь возможность отключить любую произвольную кнопку при нажатии любой из них, тогда вы можетеtag каждая кнопка с номером, чтобы ее можно было идентифицировать, из Инспектора атрибутов (внизу):

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
        }
    }
...