2010-11-24 4 views
0

Est-il possible d'avoir un nom de sortie variable? Par exemple, vous avez 10 étiquettes (peut-être des sièges dans le bus). chacun a une sortie, siège1 siège2, etc. Est-il possible d'avoir une boucle for qui concatène @ "siège" à l'incrément entier. Alors que je peux accéder à seat1, seat2 outlet sans avoir à le spécifier individuellement. Cela ne fonctionne pas mais rend un peu plus clair ce que j'essaie d'atteindre.Nom IBOutlet variable?

int i; 
for (i = 0; i < [seatarray count]; i++) 
{ 
    [@”seat” stringByAppendingString[ i stringValue]] = @””; 
} 

Répondre

0

Il pourrait être plus facile de créer simplement le tableau vous au moment du chargement:

self.seatarray = [NSArray arrayWithObjects:seat1, seat2, ..., seatN, nil]; 
6

À partir iOS4 vous pouvez utiliser IBOutletCollection qui permet de connecter plusieurs instances à une sortie unique qui représente un tableau d'objets , par exemple IBOutletCollection qui peut stocker UILabels seulement:

@property (nonatomic, retain) IBOutletCollection(UILabel) NSArray *seats; 
+1

Soyez conscient, cependant, que même si IBOutletCollection prend une NSArray, l'ordre du contenu n'est pas spécifié, et n'est pas toujours l'ordre dans lequel ils ont été branchés dans IB. C'est dommage, car ce serait un bon endroit pour les utiliser. –

+0

Non ordonné, mais vous pouvez toujours utiliser les balises UIView et trier le tableau pour obtenir des éléments spécifiques. –

+1

J'ai été capable de contourner cette limitation en remplaçant simplement le getter et en retournant un tableau trié basé sur des balises. –

0

Vous devriez être en mesure de le faire avec le codage clé-valeur, quelque chose comme (code non testé)
for (int i = 0; i != 10; ++i) { [self setValue:@"foo" forKey:[@"seat" stringByAppendingFormat:@"%d", i]]; }

Questions connexes