2012-05-28 5 views
6

¡Nuevo en el desarrollo de Objective-C y iOS, le encantaría tener una mano aquí!¿Cómo ocultar un montón de etiquetas en un IBOutletCollection?

he escrito algo de código de tal manera que

IBOutletCollection(UILabel) NSArray *allLabels; 

En IB que se han conectado todos mis etiquetas en mi opinión, a esta colección, donde quiero ocultarlos para una determinada condición. Sin embargo, no estoy seguro de cómo hacerlo. Obviamente para ocultar una única etiqueta que haría uso de

labelX.hidden = YES; 

sin embargo, no es lo ideal para mí hacer esto sin una colección, ya que tengo muchas etiquetas para esconderse.

¡Gracias por sus sugerencias con anticipación!

Respuesta

8

probar este ...

[allLabels setValue:[NSNumber numberWithBool:YES] forKey:@"hidden"]; 
+0

@Vladimir que será se más rápido.. ? el sugerido por mit3z o por mí ..? solo por curiosidad. –

+0

Hizo algunas pruebas rápidas, por lo que no garantiza que sean adecuadas. Su método (probado en iPod touch con una matriz de 50 etiquetas) corre de 0.0022 a 0.0029 segundos, el método de mit3z se ejecuta: 0.0015-0.002s, por lo que es un poco más rápido – Vladimir

+0

@Vladimir ¿Diría que los bloques son generalmente más rápidos que los métodos ...? ¿Es por eso que está sucediendo? –

2

Sólo enumerar recogida y hacer lo que quiera con contenidos:

[allLabels enumerateIndexesUsingBlock:^(UILabel *label, NSUInteger idx, BOOL *stop) { 
    label.hidden = YES; 
}]; 
0

Swift Versión para el tipo de matriz:

(allLabels as NSArray).setValue(NSNumber(bool: true), forKey: "hidden") 
+2

'allLabels.forEach {$ 0.hidden = true}' sería más ágil – EmilioPelaez

Cuestiones relacionadas