Swift: установить свойства для расширения IBOutletCollection, содержащего UIButtons - PullRequest
0 голосов
/ 19 мая 2019

Как я могу установить свойства для «расширения» «IBOutletCollection», содержащего «UIButtons»?Я пытаюсь сделать это аналогично тому, как это можно сделать с расширением UIButton, которое, похоже, не распространяется на коллекцию UIButton.Я надеюсь быть максимально подробным и понятным.

Хотя есть похожие вопросы:

1. Изменить цвет UIButton в IBOutletCollection

2. Установить индивидуальный заголовок кнопок UIB в IBOutletCollection

... и многих других.Я до сих пор не понимаю, как это сделать, и действительно могу использовать помощь, которую может предоставить любой из вас.

Вот что я собрал до сих пор:

  1. IBOutletCollection всегдаNSArray.
  2. Используйте цикл for для циклического перебора содержимого массива.

Вот мой пример кода: (Я попытался заменить «Array» на «NSArray» и «Collection» на «Collection», работающий аналогично «Array»)

//Inside the main viewController:

@IBOutlet var ButtonCollection: [UIButton]!
//Inside the extention file:

extension Array where Element == UIButton
{
    func sharedButtonProperties()
    {
        for button in ButtonCollection
        {
            self.setTitleColor(.red, for: .normal)
           //MARK: More properties will go here, once I get this to work. 
        }
    }
}
//calling the code inside main viewController, within "viewDidAppear"

ButtonCollection.sharedButtonProperties()

Теперь вот пример расширения одного IBOutlet UIButton, который работает просто отлично, но не с коллекцией:

//Inside the main viewController:

@IBOutlet weak var ButtonSingle: UIButton?
//Inside the extention file:

extension UIButton
{
    func buttonProperties()
        {
            self.setTitleColor(.red, for: .normal)
        }
}
//calling the code inside main viewController, within "viewDidAppear"

ButtonSingle?.buttonProperties()

Я не являюсь опытным программистом, любая помощь оказывается с благодарностью.

Спасибо.

1 Ответ

0 голосов
/ 20 мая 2019

Я наконец нашел решение после стольких проб и ошибок. Я хочу поделиться ответом с любым, кому нужно установить свойства UIButtons в пределах IBOutletCollection . Это очень эффективный способ сократить время, когда вы хотите установить / определить свойства для группы кнопок или для всех кнопок всего проекта.

Я действительно надеюсь, что кто-то найдет это полезным!

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

//Inside the main viewController

@IBOutlet var ButtonCollection: [UIButton]!
//Inside the extention file:

extension Array where Element == UIButton
{
    func sharedButtonProperties()
    {
        for **buttonGrp** in **self**
        {
            **buttonGrp**.setTitleColor(.red, for: .normal)
           //MARK: More properties will go here now! 
        }
    }
}
//calling the code inside main viewController, within "viewDidAppear"

ButtonCollection.sharedButtonProperties()

Как вы можете видеть: я почти понял это, но все, что было нужно, это вызвать «buttonGrp» для «for-in-loop» и установить его в «self». Я надеюсь, что это делает смысл!

Пока, пока!

...