2012-12-05 2 views
0

제대로 UIProgressView를 업데이트하는 방법 :I 클래스 <code>LoadViewController</code>있어 및 시작에 내가이 전화를 목적-C

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view. 

dispatch_async(kBgQueue, ^{ 

    NSData *dataOfURL = [NSData dataWithContentsOfURL:kRSSURL]; 

    [self performSelectorOnMainThread:@selector(fetchedData:) withObject:dataOfURL waitUntilDone:YES]; 
}); 
} 

kbgQueue는 주 스레드에서

#define kBgQueue dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0) 

fetchedData:을 실행입니다.

-(void)passProgress:(float)progress { 

dispatch_async(dispatch_get_main_queue(), ^{ 
    [self.progressView setProgress:progress]; 
    NSLog(@"Updated!"); 
}); 
} 
: 당신은 내가 모든 데이터 data.When 한 조각은 내가 대표로 [self.delegate passProgress:fetchedItems/20.0f];를 호출하고 LoadViewController이 같은 것입니다 다운로드 가져 오기 내 자신의 XMLParser 헬퍼 클래스를 사용시피

- (void)fetchedData:(NSData *)responseData { 

XMLParser *parser = [[XMLParser alloc] initWithData:responseData]; 
parser.delegate = self; 

if ([parser parse]) { 

    // if parsed. 
    if (!data) { 

     data = [[NSMutableArray alloc] init]; 
    } 
    else { 

     [data removeAllObjects]; 
    } 

    data = [parser getParsedData]; 

    ViewController *viewController = [self.storyboard instantiateViewControllerWithIdentifier:@"ViewController"]; 
    viewController.array = data; 

    [self presentViewController:viewController animated:YES completion:^{}]; 
    //[self reloadData]; 
} 
else { 

    NSLog(@"False."); 
} 

} 

하지만 문제는 다음과 같습니다. progressView는 20 개의 데이터 항목 중 하나를 다운로드 한 후에 업데이트되지 않습니다. 문제가 어디에 있습니까?

+1

데이터를 다운로드 할 때 'NSURLConnection'을 사용하는 것이 더 좋습니다. 그 이유는 입력 바이트를 처리하고 진행률을 업데이트하여 데이터의 실제 백분율을 표시하고, 위대한 ['AFNetworking'] (https : // github .com/AFNetworking/AFNetworking). – rckoenes

+0

@rckoenes - 감사합니다. 나는 그것을 검사 할 것이다. –

답변

0

잘 모르겠지만 LoadViewController에서 perfromOnMainThread:withObject:waitUntilDone:에서 perfromInBackground:withObject:으로 변경되었지만 작동합니다.