2015-01-12 2 views
-4

안녕하세요 저는 ios 개발에 익숙하지 않습니다. 예를 들어 3000으로 반복 할 때 각 값을 UILabel에 표시하고 싶습니다. 하지만 루프가 끝난 후 마지막 카운트 값을 보여줍니다. 여기 간단한 코드가 있습니다.루프가 UIlable에 카운트 값을 표시하지 않습니다.

for (int i = 0; i < 3000; i++) { 
    myLable.text = [NSString stringWithFormat: @"%d", i]; 
    NSLog(@"loop is running"); 
} 
NSLog(@"loop is finished"); 

또한 GCD를 사용했지만 결과가 없습니다.

위의 코드는 .IN 루프 내가 원하는 어떠한 접촉도 내가 보여주고 싶은 추가 잎파리가 나는 사용자가 연락처의 그룹을 선택하면 3000 개 이상의 연락처를 추가 할

그냥 예입니다 카운트 값 in uilable. 이 같은 것

-(void)addContacts:(NSArray*)numberOfContacts 
{  
    for (int i = 0; i < [numberOfContacts count]; i++) { 
    //method call to add the contact ex:[self addContact:@"murali" phoneNumber:@"41524652"] 
    myLable.text = [NSString stringWithFormat: @"%d", i]; 

    } 
} 
+2

레이블은 각 값을 0..3000으로 사용하지만 매번 덮어 쓰므로 마지막 값만 볼 수 있습니다 (보기에는 너무 빠름). 여기서 무엇을 이루려고합니까? –

+0

추가 문자열은 for 루프에 겹쳐 쓰지 않습니다. –

+1

또는이 값을 순차적으로 표시 하시겠습니까? 이 경우 타이머를 구현해야합니다. – humblePilgrim

답변

0

이렇게하면 안됩니다. 화면 새로 고침은 실행 루프를 통해 수행됩니다. 즉, 이벤트 처리 방법이 완료되면 의미합니다. 메소드에서 "3.000 가지"를 수행하면 화면이 나중에 업데이트됩니다. 런 루프를 이해해야합니다. 그것은 핵심 역량입니다.

나는 당신이 정확히하고 싶은 것을 모른다. 그러한 일을하는 전형적인 접근법은 다릅니다.

당신은 백그라운드에서 그것을합니다. 이자형. GCD 사용. 백그라운드 블록에서 다시 그리기 블록을 기본 대기열로 보낼 수 있습니다.

+0

for 루프를 사용하여 백그라운드에서 메인 큐로 디스패치하는 방법 dispatch_queue_t queue = dispatch_get_global_queue ( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0); dispatch_async (큐^{; 나 3000 <; 가 (ⅰ = 0 int로 난 ++) { } dispatch_async (dispatch_get_main_queue()^{ }) }); –

+0

첫 번째 (서식없는)보기에서 올바른 방법으로 보입니다. –

+0

어떤 식 으로든 나는 "오직 제어 만이 그 시간에 런 루프로 들어간다"는 것을 이해했다. 귀중한 정보에 감사드립니다. –

관련 문제