OK 여기에 기본적인 것을 놓치기를 바랄뿐입니다. 그것은 예제 코드 없이는 자명합니다 : 셀이 선택되었을 때 webView로 전달하기 위해 tableView 및 관련 URL에 표시 될 제목 목록으로 구성된 웹 호스팅 XML 파일을 구문 분석합니다. 파싱은 tableView에서 사전에 발생합니다. 내가 주 스레드에서 구문 분석하면 멋지게 작동하지만 신호가 약한 경우 UI를 매달아 야한다고 걱정합니다. 그래서 여기에 예제에 따라 디스패치 큐에서 구문 분석 호출을 래핑하고 지금 그것은 빈 테이블을 제공합니다. 그러나 뷰 계층 구조를 백업하고 다시 시도하면 (내비게이션 컨트롤러에 포함 된 경우) 작동하며 테이블이 완전히 채워집니다. 2 차 스레드를 사용하여 내용 배열을 채우기 전에 어떻게 든 테이블이 만들어 졌다고 가정합니다. 이것을 어떻게 얻을 수 있습니까? 감사합니다. AndrewiOS : xml 구문 분석을 완료하기 전에 테이블보기가 작성되었습니다.
0
A
답변
1
이 NSXMLParser
의 - (void)parserDidEndDocument:(NSXMLParser *)parser
대리자 메서드를 구현 : 여기 내 코드입니다. 그리고 해당 메서드에서 tableView reloadData
호출하십시오.
- (void)parserDidEndDocument:(NSXMLParser *)parser
{
dispatch_sync(dispatch_get_main_queue(), ^{
[yourTable reloadData];
});
}
만 감사 만
+0
XML 데이터를 파싱 한 후, 테이블을로드해야 – user1084420
+0
user1084420 @ 아름답게 작동 –
0
디스패치 대기열에서 처리하는 경우 기본 대기열에서 UI를 업데이트해야합니다.
나는 비슷한 것을하고있다.
dispatch_queue_t imgDownloaderQueue = dispatch_queue_create("imageDownloader", NULL);
dispatch_async(imgDownloaderQueue, ^{
NSString *avatarUrlString = [avatarImageDictionary objectForKey:@"url"];
avatarImage = [[UIImage alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:avatarUrlString]]];
dispatch_sync(dispatch_get_main_queue(), ^{
id asyncCell = [self.tableView cellForRowAtIndexPath:indexPath];
[[asyncCell avatarImageView] setImage:avatarImage];
});
});
:와 즐거움 :) –