Почему цвет текста моих кнопок не меняется, когда я нажимаю на них? - PullRequest
0 голосов
/ 01 июля 2019

Я хочу изменить цвет текста моих кнопок UIB на .orange каждый раз, когда пользователь выбирает одну кнопку, чтобы показать, какая из них выбрана.Он меняет цвет обратно на .белый, если выбрана другая кнопка.Я попытался создать подкласс для кнопок с кодом ниже, но ничего не изменилось.Использование раскадровки и изменение атрибута цвета в инспекторе также не работает.Чего мне не хватает?

class HighlightedButton: UIButton {

override var isHighlighted: Bool {
    didSet {
        backgroundColor = isHighlighted ? .orange : UIColor(red: 44/255, green: 62/255, blue: 80/255, alpha: 1.0)
    }
}

override var isSelected: Bool {
    didSet {
        titleLabel?.textColor = isSelected ? .orange : .white
    }
}

1 Ответ

2 голосов
/ 01 июля 2019

Вы можете просто создать Outlet Collection для всех buttons в stackView.

Добавьте @IBAction и подключите к нему все buttons. В этом методе установите selection из tapped button. И измените textColor всех buttons в Outlet Collection на основе их выбора, т.е.

@IBOutlet var buttons: [UIButton]!

@IBAction func onTapButton(_ sender: UIButton) {
    buttons.forEach {
        $0.isSelected = ($0 == sender)
        $0.setTitleColor((sender.isSelected) ? .orange : .white, for: .normal)
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...