concatenation de mon compteur au nom de variable
Salut,
J'ai une série d'outlet, img1 à 6, et j'aimerai faire un set des images dans une boucle (j'ai plusieurs page etc, ça va être long à faire à la main), donc je cherche à faire un
C'est possible ?
Merci
J'ai une série d'outlet, img1 à 6, et j'aimerai faire un set des images dans une boucle (j'ai plusieurs page etc, ça va être long à faire à la main), donc je cherche à faire un
for (int i=1; i < 7; i++) {<br /> mavue.monOutlet+i.image = monImage;<br />}<br />
C'est possible ?
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Si je comprend bien, tu veux référencer tes images par un indice. Pourquoi ne pas les stocker dans un NSMutableArray ?
Utiliser un NSArray est toutefois une meilleure idée sur le moyen terme, quand la classe évoluera. Le KVC est résolu à l'exécution, alors que mettre des outlets qui n'existeraient plus dans un NSArray se voit à la compilation.
Merci beaucoup !
Inconvénient : le tableau n'est pas ordonné. Il n'y a pas de corrélation entre l'ordre dans lequel tu as connecté tes UIImageViews à l'outlet dans IB et l'ordre dans lequels ces objets se retrouveront dans ton NSArray. Du coup c'est bien pour itérer sur toutes tes UIImageViews, mais tu ne pourras pas les différencier et les traiter de façon isolée (si tu cherches à un moment à ne changer l'image que d'une seule de tes 6 UIImageViews par exemple, pas de possibilité de savoir laquelle correspond à celle que tu cherches)
2) Tu peux utiliser le KVC, comme proposé par Céroce
3) Tu peux utiliser les tags des views et viewWithTag ensuite pour les récupérer.
Par exemple tu affectes à tes UIImageViews la valeur 1000+i à chacune, i allant donc de 1 à 6. Et comme ca c'est facile de boucler dessus en récupérant viewWithTag:1000+i
4) Tu peux mixer le tout (IBOutletCollection pour tes boucles + tags pour accès individuel
5) Tu peux créer un NSArray contenant tes 6 images (mais ça veut dire qu'il faut que tu le remplisses au runtime dans ton viewDidLoad par exemple
6) Tu peux (plus simple) utiliser un tableau C :