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 개의 데이터 항목 중 하나를 다운로드 한 후에 업데이트되지 않습니다. 문제가 어디에 있습니까?
데이터를 다운로드 할 때 'NSURLConnection'을 사용하는 것이 더 좋습니다. 그 이유는 입력 바이트를 처리하고 진행률을 업데이트하여 데이터의 실제 백분율을 표시하고, 위대한 ['AFNetworking'] (https : // github .com/AFNetworking/AFNetworking). – rckoenes
@rckoenes - 감사합니다. 나는 그것을 검사 할 것이다. –