// create NSMutableArray* of score UILabel items, called "scoreLabels"
NSMutableArray *scoreLabels = [NSMutableArray arrayWithCapacity:10];
[scoreLabels addObject:scoreLabel1];
[scoreLabels addObject:scoreLabel2];
// ...
NSUInteger _index = 0;
for (NSNumber *_number in scoresArray) {
UILabel *_label = [scoreLabels objectAtIndex:_index];
_label.text = [NSString stringWithFormat:@"%d", [_number intValue]];
_index++;
}
EDIT
Je ne suis pas sûr pourquoi vous voulez commenter _index++
. Je n'ai pas testé ce code, alors peut-être qu'il me manque quelque chose quelque part. Mais je ne vois rien de mal avec _index++
- c'est une façon assez standard d'incrémenter un compteur.
Comme alternative à la création du tableau scoreLabels
, vous pourriez en effet récupérer la propriété tag
des sous-vues du contrôleur de vue (dans ce cas, UILabel
instances que vous ajoutez une valeur tag
dans Interface Builder).
En supposant que la valeur tag
est prévisible - par exemple, chaque UILabel
de scoreLabel1
par scoreLabel10
est marqué avec un tag
égale aux valeurs de _index
que nous utilisons dans la boucle for
(0 à 9) - on peut alors faire référence à la UILabel
directement:
// no need to create the NSMutableArray* scoreLabels here
NSUInteger _index = 0;
for (NSNumber *_number in scoresArray) {
UILabel *_label = (UILabel *)[self.view viewWithTag:_index];
_label.text = [NSString stringWithFormat:@"%d", [_number intValue]];
_index++;
}
la clé de ce travail est que la valeur tag
doit être unique pour le UILabel
et doit être quelque chose que vous pouvez faire référence avec -viewWithTag:
.
Le code ci-dessus suppose très simplement que les valeurs tag
sont les mêmes que les valeurs _index
, mais cela n'est pas obligatoire. (Il suppose également les UILabel
instances sont subviews de view
propriété, du contrôleur de vue qui dépendra de la façon dont vous configurez votre interface dans Interface Builder.)
Certaines personnes écrivent des fonctions qui ajoutent 1000 ou un autre entier qui vous permet groupe types de sous-vues ensemble - UILabel
instances obtiennent 1000, 1001, et ainsi de suite, et UIButton
instances obtiendraient 2000, 2001, etc.
Vous pouvez même vous débarrasser du tableau scoreLabels si des tags ont été ajoutés aux objets UILabel dans Interface Builder et viewWithTag: a été utilisé pour les récupérer. – gerry3
Merci Alex. Cela ne construit que si je commente le _index ++. Ensuite, il renvoie le nombre final dans le tableau à l'étiquette définie à [scoreLabels addObject: scoreLabel1]; – user244295
Vous avez ce travail en utilisant -viewWithTag, Cheers pour l'info. – user244295