2009-08-10 7 views
0

Ok J'ai 8 étiquettes et je veux les boucler mais je n'ai pas de chance.Boucle dans les étiquettes iPhone SDK

C'est ce que j'ai essayé.

for (int i; i = 0; i < 10; i++) 
{ 
    double va = [varible1.text doubleValue] + i; 
    int j = 0 + I 

    label(j).text= [[NSString alloc]initWithFormat:@"%2.1f", va]; 
} 

Cette erreur est survenue. Mes étiquettes sont nommées comme ceci label0, label1, label2

Toute aide serait appréciée.

Répondre

2

Vous devriez peut-être ajouter toutes vos étiquettes à un tableau C, probablement dans -viewDidLoad

UILabel* labels[] = { label0, label1, label2, ... }; 

(pas tout à fait sûr sur la syntaxe) et y accéder alors comme

labels[i].text = ... 

D'ailleurs, je pense que vous êtes fuite de mémoire ici:

labels[i].text = [[NSString alloc]initWithFormat:@"%2.1f", va]; 

initWithFormat: renvoie une chaîne avec un nombre de conservation de 1. labels [i] .text conservera cette valeur à nouveau. Vous devez libérer la chaîne après avoir défini le texte de l'étiquette. Je probablement AutoRelease ici:

labels[i].text = [[[NSString alloc]initWithFormat:@"%2.1f", va] autorelease]; 

ou utilise stringWithFormat (qui retourne une chaîne autoreleased):

labels[i].text = [NSString stringWithFormat:@"%2.1f", va]; 
+0

J'ai beaucoup travaillé. Je vous remercie. –

3

label(j) ne correspond pas à Label0, label1, etc.

Vous devez créer un NSArray d'étiquettes, vous pouvez y accéder avec [arrayOfLabels objectAtIndex:j]. Si vous n'êtes pas sûr de ce que cela signifie, s'il vous plaît lire la documentation sur NSArray ...

0

Si vous ne pouvez pas ou ne voulez pas mettre vos étiquettes dans un tableau, vous pourrait parcourir les UIViews en utilisant le champ tag comme index. Vous stockez les numéros d'index dans ces fichiers (via IB ou par programme), puis obtenez chaque étiquette à l'aide de: (UIView *) viewWithTag: (NSInteger).

Voir ci-dessous (ensemble theView à la vue de vos étiquettes résident dans):

for (int i; i = 0; i < 10; i++) 
{ 
    double va = [varible1.text doubleValue] + i; 

    UILabel * label = [theView viewWithTag: i]; 
    label.text= [[NSString alloc]initWithFormat:@"%2.1f", va]; 
} 
1
for (UILabel *lbl in self.view.subviews) 
    {  
     [lbl setFont:[UIFont fontWithName:@"AppleGothic" size:22]]; 
    } 

il va changer toutes les étiquettes dans votre ViewController en donnant simplement des étiquettes aux étiquettes.

+0

Une réponse est bonne, une réponse expliquée pourquoi/comment vous avez fait quelque chose est encore mieux. Veuillez fournir des informations supplémentaires dans votre réponse, pas seulement le code source. – Manuel