2017-02-08 1 views
0

도와주세요.이 문제를 해결할 수 있습니다. 실제로 문자열 배열이 있습니다. Im 매개 변수로 매개 변수를 매개 변수로 전달하여 그 문자열이 레이블에 인쇄되는 다른 메서드로 전달합니다. 문제는 레이블의 배열의 마지막 색인 만 가져 오는 것입니다. Every 표시해야하는 경우 레이블의 색인 문자열?메서드에 문자열 배열을 전달해도 레이블 텍스트의 모든 문자열이 업데이트되지 않습니다.

-(void)method{ 
     NSArray *array=[NSArray arrayWithObjects:@"one",@"two",@"three",@"four",@"five",@"six",@"seven",@"eight",@"nine",@"ten", nil]; 
     for(int i=0;i<10;i++){ 

     NSString *temp=[NSString stringWithFormat:@"%@",array[i]]; 
     [self setTextForLoader:temp]; 


    } 
    } 
+(void)setTextForLoader:(NSString*)loaderStr{ 

    NSLog(@"loaderStr-->%@",loaderStr); 

    [activityViewLabel setText:@""]; 

    NSString *str = [NSString stringWithFormat:@"%@ %@",@"Syncing",loaderStr]; 

    [activityViewLabel setText:str]; 
    Sleep(1); 

} 
+0

하나의 레이블 또는 다른 레이블에 모든 배열 값을 표시 하시겠습니까? –

+0

@ YatishAgrawal 단일 레이블 –

+0

NSString * str = [NSString stringWithFormat : @ "% @ % @"@ "동기화 중", activityViewLabel.text, loaderStr] ;. 실제로 반복되는 동안 라벨 텍스트가 다른 배열 값으로 대체 된 다음 마지막 인덱스 값이 라벨에 저장됩니다. –

답변

0

이렇게 코드를 변경하십시오. 문제는 main 스레드에서 sleep 메서드를 호출하는 것입니다.

귀하의 방법을 호출하십시오.

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     //Do background work 
     [self method]; 
}); 

그리고 setTextForLoader 방법은 이와 같습니다.

-(void)setTextForLoader:(NSString*)loaderStr{ 

    NSLog(@"loaderStr-->%@",loaderStr); 

    [_labelTimer setText:@""]; 

    NSString *str = [NSString stringWithFormat:@"%@ %@",@"Syncing",loaderStr]; 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [_labelTimer setText:str]; 
    }); 


    sleep(1); 

} 
+0

Im 콘솔에서 str을 올바르게 가져 오지만 내 레이블에서 변경 사항을 가져올 수 없습니다. 사실 내 레이블에 마지막 색인 문자열 만 표시됩니다. –

+0

내 코드를 사용해 보셨습니까? – Sunny

+0

예 ur code.Actually 문제는 API에서 값을 얻습니다. API에서 배열 및 내 For 루프에 저장 '(for NSDictionary * categoryDictionary in responseObject [@ "XX"] [@ "YY"]) ' –