2012-05-28 12 views
6

Nuovo allo sviluppo Objective-C e iOS, mi piacerebbe una mano qui!Come nascondere un gruppo di etichette in un IBOutletCollection?

ho scritto un po 'di codice in modo tale che

IBOutletCollection(UILabel) NSArray *allLabels; 

In IB ho collegato tutti i miei etichette a mio avviso a questa collezione, dove voglio nascondere loro per una certa condizione. Tuttavia, non sono sicuro di come farlo. Ovviamente per nascondere una singola etichetta userei

labelX.hidden = YES; 

tuttavia non è l'ideale per me fare questo senza una collezione, come ho molte etichette da nascondere.

Grazie per i suggerimenti in anticipo!

risposta

8

provare questo ...

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

@Vladimir che sarà essere più veloce ..? quello suggerito da mit3z o da me ..? solo per curiosità. –

+0

Effettuato alcuni test rapidi, quindi non garantisce che siano adeguati. Il tuo metodo (testato su iPod touch con una serie di 50 etichette) esegue 0,0022 - 0,0029 sec, il metodo di mit3z funziona: 0,0015-0,002s quindi è un po 'più veloce – Vladimir

+0

@Vladimir diresti che i blocchi sono generalmente più veloci dei metodi ..? è per questo che sta succedendo? –

2

Basta enumerare la raccolta e fare quello che vuoi con i contenuti:

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

Swift Versione per tipo Array:

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

'allLabels.forEach {$ 0.hidden = true}' sarebbe più swifty – EmilioPelaez

Problemi correlati