ios - Swift puso mĂșltiples IBOutlets en un Array
cocoa iboutletcollection (4)
Comience con el panel de dos vistas donde verá tanto su código como el guión gráfico. Cuando realice su primera conexión de IBOutlet desde la interfaz de usuario a su código, simplemente observe detenidamente el campo desplegable de Conexión y seleccione la opción llamada "Outlet Collection". Esto creará automáticamente una matriz de IBOutlets. A continuación, busque el pequeño círculo negro dentro de un círculo que se coloca en su código donde se crea la matriz. Simplemente arrastre desde este círculo a todos los demás objetos de la interfaz de usuario que desea conectar a la misma colección (no estoy seguro si puede mezclar tipos). De manera similar, puede conectar todos los objetos a una Acción arrastrando desde el primer punto negro creado a todos los demás objetos que desea conectar a esa acción. También considere EnumerateSequence () como ayuda para trabajar con esta Colección. Dulce cierto?
Hice estos IBOutlets (marcados con borde rojo) utilizando ctrl + drag
Pero no me gusta tener exactamente la misma línea 9 veces (DRY)
¿Cómo pongo estos IBOutlets en una matriz?
Puedes definir una colección de outlet genérica en Swift así:
@IBOutlet var collectionOfViews: Array<UIView>? // = [UIView]?
o para, por ejemplo, objetos UIButton
:
@IBOutlet var collectionOfButtons: Array<UIButton>? // = [UIButton]?
puede encontrar sus colecciones en el grupo Colecciones de puntos de venta , como suele ser en el Propietario del archivo :
Se vería en mi consola después de conectar 5 botones aleatorios:
Siga estos pasos para crear una serie de puntos de venta y conéctelo con los elementos de IB:
- Crear una matriz de IBOutlets
- Agregue múltiples UIElements (Vistas) en su interfaz de Storyboard ViewController
- Seleccione ViewController (en el guión gráfico) y abra el inspector de conexión
- Hay una opción ''Colecciones de puntos de venta'' en el inspector de conexiones (Verá una serie de puntos de venta allí)
- Conéctate si con los elementos de tu interfaz.
-
class ViewController2: UIViewController {
@IBOutlet var collection:[UIView]!
override func viewDidLoad() {
super.viewDidLoad()
}
}
Solución aquí Swift - IBOutletCollection equivalente
@IBOutlet var objectCollection: [Objeto]