Коллекция IBOutletCollection - PullRequest
       59

Коллекция IBOutletCollection

0 голосов
/ 04 января 2019

Я ищу способ изменить цвет фона только для кнопок с одинаковым текстом. Поэтому я создал (на данный момент только 2) IBOutletCollections и 1 IBAction для тестирования. Но у меня есть 27 разных номеров кнопок для кодирования ... или мне нужно создать 27 коллекций розеток и 27 действий?

class SecondViewController: UIViewController {


@IBOutlet var button1color: [UIButton]!
@IBOutlet var button2color: [UIButton]!

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.

}


@IBAction func bouton1(_ sender: UIButton) {
    for button in self.button1color {
        if button.backgroundColor == nil {
        button.backgroundColor = UIColor(displayP3Red: 1, green: 1, blue: 0.5, alpha: 0.8)
        } else {
            button.backgroundColor = nil
        }
    }

}

Есть ли способ создать функцию, чтобы не вводить 27 раз один и тот же код для каждого случая?

Для получения дополнительной информации, не стесняйтесь спрашивать меня!

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 04 января 2019

Я ищу способ изменить цвет фона только для кнопок с одинаковым текстом

Я так понимаю: вам нужна коллекция кнопок, и когда нажимается какая-то кнопка из этой коллекции, вы хотите изменить цвет для всех кнопок из коллекции, имеющих одинаковый текст (заголовок, когда мы говорим о UIButton )


Таким образом, вы можете иметь только одну коллекцию для всех кнопок. Свяжите их с этой коллекцией

@IBOutlet var buttons: [UIButton]!

enter image description here

а также вы можете иметь только одно действие для всех кнопок. Также свяжите их с этим действием. Затем, когда кнопка нажата, измените backgroundColor кнопки, которая имеет тот же заголовок, что и кнопка, которая была нажата

@IBAction func buttonPressed(_ sender: UIButton) {
    for button in buttons where button.currentTitle == sender.currentTitle {
        button.backgroundColor = UIColor(displayP3Red: 1, green: 1, blue: 0.5, alpha: 0.8)
    }
}

enter image description here

...