UIButton collection устанавливает цвет для последней нажатой кнопки - PullRequest
0 голосов
/ 17 марта 2019

У меня есть массив кнопок, которые будут действовать как меню выбора. Я хочу, чтобы, когда я нажимал на одну из них, она меняла свой backgroundColor, а все остальные кнопки возвращались к своему первоначальному цвету.

Это то, что у меня есть на данный момент

 @IBAction func optionSelected(_ sender: UIButton) {

    for button in selectButtons {
        if button.tag == sender.tag {

        if !button.isSelected {
            button.backgroundColor = palette.importantColorObject()
            button.isSelected = true
        } else {
            button.backgroundColor = palette.clearGrayColorObject()
            button.isSelected = false
        }

        }
    }

Но я не знаю, как сделать так, чтобы это было только у последней выбранной кнопки importantColorObject, и у меня также проблема в том, что при выборе кнопки меняется не только цвет ее фона, но и выглядит если текст внутри был выбран (синим цветом). Как я могу решить это?

Заранее спасибо

1 Ответ

0 голосов
/ 18 марта 2019

Это решит вашу единственную проблему выбора, это гарантирует, что у вас всегда будет выбранная кнопка, если вы не отмените выбор выбранной, и все ваши кнопки перейдут в серое или не выбранное состояние.

@IBAction func optionSelected(_ sender: UIButton) {

    selectButtons.forEach { (button) in
        button.backgroundColor = palette.clearGrayColorObject()
        button.isSelected = false
    }

    sender.backgroundColor = palette.importantColorObject()
    sender.isSelected = true
}

если вы хотите, чтобы эта функциональность тоже использовалась, то

@IBAction func optionSelected(_ sender: UIButton) {
   if sender.isSelected {
       sender.backgroundColor = palette.clearGrayColorObject()
       sender.isSelected = false
   } else {
       selectButtons.forEach { (button) in
           button.backgroundColor = palette.clearGrayColorObject()
           button.isSelected = false
       }

       sender.backgroundColor = palette.importantColorObject()
       sender.isSelected = true
   }
}

Надеюсь, это поможет.

...