2009-08-10 4 views
0

좋아요. 저는 8 개의 레이블이 있는데 루프를 통과하고 싶지만 운이 없습니다.Loop through labels iPhone SDK

이것은 내가 시도한 것입니다.

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

이 오류가 발생했습니다. 내 라벨의 이름은 다음과 같습니다. label0, label1, label2

도움이 되셨습니까?

답변

2

있는 NSArray에 대한 설명서를 ... 읽어 보시기 바랍니다 다음 과) 구문에 대해 그런데

labels[i].text = ... 

처럼 액세스, 난 당신이 여기에 메모리가 누수 있다고 생각 :

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

initWithFormat : 보유 개수가 1 인 문자열을 반환합니다. labels [i] .text는 해당 값을 다시 유지합니다. 레이블 텍스트를 설정 한 후 문자열을 해제해야합니다. 당신을

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

훌륭한 결과. 고맙습니다. –

3

label(j) 당신은 라벨의있는 NSArray을 만들어야합니다

등 각각 label0, LABEL1, 일치하지 않는, 당신은 [arrayOfLabels objectAtIndex:j]에 액세스 할 수 있습니다. 당신이 무엇을 의미하는지 확실하지 않은 경우, 당신은 아마 아마 -viewDidLoad

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

(완전히 확실하지에, C 배열에 모든 레이블을 추가해야

0

수 없거나 배열에 라벨을 넣어하지 않으려는 경우 :

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

또는 (AN 오토 릴리즈 문자열을 반환) stringWithFormat을 사용 : 아마 그냥 여기를 autorelease를 것 태그 필드를 인덱스로 사용하여 UIView를 반복 할 수 있습니다. IB 또는 프로그래밍 방식으로 인덱스 번호를 저장 한 다음 : (UIView *) viewWithTag : (NSInteger) 태그를 사용하여 각 레이블을 가져옵니다.

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

은 그냥 라벨에 태그를 제공하여의 ViewController의 모든 레이블을 변경합니다 :

는 (당신의 레이블에있는 뷰에 설정 theView) 아래를 참조하십시오.

+0

답변이 좋다, 설명 된 대답 왜/어떻게 당신이 뭔가를 더 잘했다. 소스 코드뿐만 아니라 답변에 추가 정보를 제공해주십시오. – Manuel