2009-08-10 7 views
0

Ok Ich habe 8 Etiketten und ich möchte sie durchlaufen, aber ich habe kein Glück.Schleife durch die Etiketten iPhone SDK

Das habe ich ausprobiert.

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]; 
} 

Dieser Fehler aus. Meine etiketten werden wie folgt benannt label0, label1, label2

Jede Hilfe wäre willkommen.

Antwort

2

Sie sollten vielleicht alle Ihre Etiketten auf ein C-Array hinzufügen, wahrscheinlich in -viewDidLoad

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

(nicht ganz sicher, über die Syntax) und sie dann wie

labels[i].text = ... 

Durch die Art und Weise zuzugreifen, ich glaube, Sie Speicher sind undicht hier:

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

initWithFormat: gibt eine Zeichenfolge mit einer Retain-Anzahl von 1 zurück. Labels [i] .text behält diesen Wert erneut bei. Sie sollten die Zeichenfolge nach dem Festlegen des Beschriftungstexts freigeben. Ich würde wahrscheinlich Autorelease es gerade hier:

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

oder verwenden string (die eine Autoreleased String zurückgibt):

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

Arbeitete großartig. Vielen Dank. –

3

label(j) nicht gleichwertig Label0 ist, label1 usw.

Sie sollten eine NSArray von Etiketten erstellen, dann können Sie sie mit [arrayOfLabels objectAtIndex:j] zugreifen. Wenn Sie nicht sicher sind, was das bedeutet, lesen Sie in der Dokumentation über NSArray ...

0

Wenn Sie nicht können oder wollen nicht Ihre Etiketten in einem Array setzen, Sie könnte die UIViews durchlaufen, indem das Tag-Feld als Index verwendet wird. Sie speichern die Indexnummern in ihnen (entweder über IB oder programmatisch) und erhalten dann jedes Etikett mit: (UIView *) viewWithTag: (NSInteger) -Tag.

Siehe unten (Satz TheView die Ansicht in Ihren Etiketten befinden):

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]]; 
    } 

es alle Etiketten in Ihrem Viewcontroller von nur geben Tags Etiketten ändern.

+0

Eine Antwort ist gut, eine erklärte Antwort warum/wie du etwas gemacht hast ist noch besser. Bitte geben Sie zusätzliche Informationen in Ihrer Antwort an, nicht nur den Quellcode. – Manuel