Quantcast
Channel: RIActive » iOS
Viewing all articles
Browse latest Browse all 3

Aprovechando el IBOutletCollection en iOS

$
0
0

Por fortuna (o no tanto), me ha tocado ajustar o terminar aplicaciones de iOS. Y eso me ha dejado conocimiento de muchas cosas, como técnicas y algunas otras cosas que no sabia como se implementaban. Pero siempre que me llegan esos proyectos pienso: “¿por que no usaron IBOutletCollection para esta tarea masiva?”

ios

Y es que el escenario es: tenemos 15 etiquetas (o UILabel’s) a las cuales les tenemos que hacer el mismo ajuste de fuente a todas. Entonces la solución más rápida es: hagamos label1, label2, label3 y ¡PUM! solucionado papaw.

Apple desde iOS 4 ofrece una solución mucho mejor. Se llaman colecciones del interface builder.

Un dia tuve una aplicación con 12 campos en una pantalla de iPad y después de tanto asignar los IBOutlets me pregunte: ¿Qué serán los IBOutletCollection? entonces me di a la tarea de investigar. Al final esta fue mi reacción:

Facepalm

Los IBOutletCollection’s son arreglos (NSArray) que almacenan una lista ordenada de objetos que se encuentran en nuestro archivo XIB. Y sirven justamente para referencias conjuntas de objetos similares.

Para poder hacer referencia en el XIB hay que declararlos en el Header File de nuestro view controller (*ViewController.h). Tenemos que declarar la propiedad que sera un arreglo y el tipo de componente que almacenará. Por ejemplo UILabel.

IBOutletCollection header

La referencia del arreglo tiene que ser strong para que no se pierda cuando ARC pase por nuestro controller.

Lo siguiente es abrir archivo XIB (el que esta asignado a nuestro view controller) ubicar los diferentes componentes que queremos asignar y que sean del mismo tipo que declaramos en el Header File de nuestro view controller. En este ejemplo son los UILabel’s

IBOutletCollection XIB linked

Ahora lo que haremos sera cambiar el color de fondo de nuestros UILabel’s en un bloque:

IBOutletCollection fast enumerator

También se puede hacer en un bucle for:

IBOutletCollection for

Como verán fue muy simple y aún podemos tener referencias de IBOutlet de nuestros controles (ademas de las IBOuletCollection). Y esto nos puede quitar muchos dolores de cabeza cuando tenemos que asignar la fuente personalizada del cliente que el diseñador propuso. Espero que este articulo les ayude para no tener montones de referencias para realizar cambios similares en muchos controles.  Nos leemos pronto!


Viewing all articles
Browse latest Browse all 3

Trending Articles