Swift помещает несколько IBOutlets в массив
![Multiple IBOutlets]()
Я сделал эти (отмеченные красной рамкой) IBOutlets, используя ctrl + drag
Но мне не нравится иметь ту же самую строку 9 раз (DRY)
Как разместить эти IBOutlets в массиве?
Ответы
Ответ 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]()
Ответ 3
Решение здесь Swift - эквивалент IBOutletCollection
@IBOutlet var objectCollection: [Object]
Ответ 4
Начните с двух областей просмотра, где вы увидите как свой код, так и раскадровку. Когда вы создаете свое первое соединение IBOutlet из пользовательского интерфейса с вашим кодом, просто внимательно посмотрите на поле "Отключить соединение" и выберите параметр "Коллекция Outlet". Это автоматически создаст массив IBOutlets. Затем просто найдите маленький черный круг в круге, который помещается в ваш код, где создается массив. Просто перетащите из этого круга во все другие объекты пользовательского интерфейса, которые вы хотите подключить к той же коллекции (не уверены, можете ли вы смешивать типы). Аналогичным образом вы можете связать все объекты с одним действием, перетащив его из первой черной точки, созданной для всех других объектов, которые вы хотите подключить к этому действию. Также рассмотрите функцию EnumerateSequence(), чтобы помочь в работе с этой коллекцией. Сладкий правый?