2009-06-03 5 views
3

Ce que je veux faire, c'est idéalement faire défiler tous les boutons d'un UIView (j'ai beaucoup, plus de 40 boutons), et selon l'étiquette, changer l'image que le bouton est affichage. Est-ce que quelqu'un sait comment je peux faire cela?Accéder à tous les boutons d'un UIView sur l'iPhone

Merci!

+0

@stefan: pseudocode? Vraiment?! – Forer

Répondre

1

Utilisez la propriété sous-vue de l'UIView contenant les boutons. Pour chaque élément UIView de ce NSArray, inspectez la propriété tag. Si l'étiquette correspond à ce dont votre logique a besoin, changez l'image affichée dans cette instance UIView - qui dans ce cas est l'un des boutons.

+0

Merci beaucoup! –

11

Je dirais que l'utilisation de la propriété subviews, comme devilaether dit, mais faire une vérification supplémentaire pour vous assurer que la sous-vue est un UIButton avant de faire quoi que ce soit d'autre avec elle:

for(UIView *view in [rootView subviews]) { 
    if([view isKindOfClass:[UIButton class]]) { 
     if([view tag] == 0) { 
      // First image 
     } /* ... */ 
     else { 
      NSLog(@"didn't recognize tag"); 
     } 
    } else { 
     NSLog(@"view is not a button"); 
    } 
}

Vous pouvez également vous rendre la vie plus facile si vous avez stocké un NSArray quelque part avec les UIButtons que vous vouliez parcourir; ceci prendrait le contrôle isKindOfClass:. Voir le NSObject protocol pour plus d'informations.

+0

Cela fonctionne, mais le NSLog a besoin de @ avant la chaîne. @ "n'a pas reconnu le tag". Sinon, le code ne sera pas construit. J'ai essayé d'éditer ceci mais je ne peux pas éditer de petits changements comme ceux-ci. – HotFudgeSunday

+0

Bonne prise - complètement raté cela :) Merci! – Tim

0
for(i=0; i<numberOfTags; i++){ 
UIButton *tempBtn = [yourView viewWithTag:i]; 
[tempBtn setImage:yourImage]; 

}

Questions connexes