Подтвердить что ты не робот

Swift помещает несколько IBOutlets в массив

Multiple IBOutlets

Я сделал эти (отмеченные красной рамкой) IBOutlets, используя ctrl + drag

Но мне не нравится иметь ту же самую строку 9 раз (DRY)

Как разместить эти IBOutlets в массиве?

4b9b3361

Ответ 1

вы можете определить общую коллекцию розетки в Swift следующим образом:

@IBOutlet var collectionOfViews: Array<UIView>?

или, например, UIButton объектов:

@IBOutlet var collectionOfButtons: Array<UIButton>?

вы можете найти свои коллекции в группе Outlet Collections, как обычно, в File Owner:

Outlet Collections

он будет выглядеть на моей консоли после подключения 5 случайных кнопок:

Connected UIButton instances to Collection

Ответ 2

Выполните следующие шаги, чтобы создать массив выходов и подключить его к IB Elements:

  • Создайте массив IBOutlets
  • Добавить несколько UIElements (Views) в вашем интерфейсе ViewController для раскадровки
  • Выберите ViewController (в раскадровке) и инспектор открытых подключений
  • В инспекторе соединений есть опция "Коллекции Outlet" (вы увидите там массив торговых точек)
  • Подключить, если с элементами интерфейса

-

class ViewController2: UIViewController {


    @IBOutlet var collection:[UIView]!


    override func viewDidLoad() {
        super.viewDidLoad()
    }
}

enter image description here

Ответ 4

Начните с двух областей просмотра, где вы увидите как свой код, так и раскадровку. Когда вы создаете свое первое соединение IBOutlet из пользовательского интерфейса с вашим кодом, просто внимательно посмотрите на поле "Отключить соединение" и выберите параметр "Коллекция Outlet". Это автоматически создаст массив IBOutlets. Затем просто найдите маленький черный круг в круге, который помещается в ваш код, где создается массив. Просто перетащите из этого круга во все другие объекты пользовательского интерфейса, которые вы хотите подключить к той же коллекции (не уверены, можете ли вы смешивать типы). Аналогичным образом вы можете связать все объекты с одним действием, перетащив его из первой черной точки, созданной для всех других объектов, которые вы хотите подключить к этому действию. Также рассмотрите функцию EnumerateSequence(), чтобы помочь в работе с этой коллекцией. Сладкий правый?