Es posible el uso de algo como un IBOutlet matriz?
-
20-09-2019 - |
Pregunta
Tengo una parte superior de la vista de lista en mi actual iPhone app, que está poblada por código.He armado de la vista mediante el Interface Builder, por lo que contiene gran cantidad de UILabel
s.
Obviamente no me gustaría tener name1
, name2
, etc.puntos de venta en mi clase, sino que prefieren una name[10]
de la matriz.
Es posible hacerlo, y conectar cada elemento de la etiqueta correspondiente (o cualquier otro generador de interfaz como de la vista)?
Solución
no puede hacerlo en IB, pero puede crear una matriz en el método de init
y añadir todas las etiquetas a la misma.
Por cierto, se puede establecer alguna etiqueta para cada etiqueta y definir un macro para acceder a ella. smth como
#define NAME[TAG] (UILabel*)[self.view viewWithTag:TAG]
Otros consejos
Por supuesto, puede hacer esto con constructor de interfaces, la palabra clave es IBOutletCollection
. Lo que hace es básicamente un NSArray de múltiples puntos de constructor de interfaces.
IBOutletCollection(UILabel) NSArray *myLabels;
Así que la siguiente sería la conexión de las etiquetas en constructor de interfaces y entonces usted puede utilizar la matriz para acceder a todas las etiquetas en tiempo de ejecución.
Esto se puede hacer uso de colecciones de salida, ver esta pregunta relacionada .
Siga estos pasos para crear una matriz de puntos de venta de una conectarse con IB Elementos (Aquí es un ejemplo de UIView
, usted puede utilizar UILabel
también):
- Crear una matriz de IBOutlets
- Agregar múltiples UIElements (Vistas) en su Guión ViewController interfaz
- Seleccione ViewController (En el guión) y conexión abierta inspector
- Hay opción de Salida de Colecciones " en relación inspector (Usted verá una serie de puntos de venta que hay)
- Conectar si con sus elementos de la interfaz de
-
class ViewController2: UIViewController {
@IBOutlet var collection:[UIView]!
override func viewDidLoad() {
super.viewDidLoad()
}
}