2009-08-21 1 views
2

나는 다음 코드를 사용하여 jQuery과가 있습니다구문 분석하는 동안 화면을로드 한 다음 UITableView를 새로 고칩니다.

- (void)viewDidLoad { 
    [super viewDidLoad]; 
    parser = [[XMLParser alloc] init]; 
    [parser parseXML]; 

내 문제는 그것이 jQuery과 함께보기 컨트롤러를 표시하기 전에 모든 구문 분석 있기 때문에 출시가 너무 오래 걸리는 것입니다. 또한 다른 UITableView 설정하고 (다른 탭에서) 다른 XML을 구문 분석 할 경우 다른 탭 이동하려면 누른 다음 그것은 다른 XML 구문 분석하는 동안 응답하지 및 일단 완료되면 UITableView 표시합니다.

구문 분석을 시작하고 구문 분석 코드를 실행하는 동안 로딩 화면을 표시하는 방법에 대한 정보를 찾고, UITableView를 다시로드하지만 아무 것도 생각 나지 않았습니다.

누구든지 아이디어가 있습니까?

답변

3

를 호출 할 수 있습니다

[parser performSelectorInBackground:@selector(parseXML) withObject:nil]; 

같은 것을 (내가 UIKit는 스레드로부터 안전하지 않습니다 언급해야 당신은 performSelectorInMainThread를 사용하지 않고 백그라운드 스레드에서 모든 UI 요소를 업데이트하려고해서는 안) parseXML 코드는 다른 스레드에 있습니다. 해당 스레드에서 UI를 업데이트하지 않도록 조심하십시오. 파서 스레드에서 UI를 업데이트하려면 다음과 같이 호출해야합니다.

[self performSelectorOnMainThread:@selector(XMLUpdated:) withObject:self waitUntilDone:NO]; 
+0

parseXML이 다른 클래스에 정의 된 경우 어떻게해야합니까? 어떻게 부르죠? – Maulik

1

화면을로드하는 것으로 활동 표시기를 의미하는 경우 구문 분석 전에 표시기를 추가하려고하면 메인 스레드에서 구문 분석 할 때 차단되고 표시기가 화면에 표시되지 않기 때문에 잠재적으로 작동하지 않을 수 있습니다. 이 문제를 해결하려면 백그라운드 스레드에서 구문 분석을 수행하면 구문 분석이 수행 될 때 표시기가 나타나야합니다. 파싱 개체가 viewController에 메시지를 보내면 테이블 뷰를 표시 할 준비가되었습니다. 실행 주 스레드에서 당신은

+0

상태 표시 줄에 이미 활동 표시기가 있지만 응용 프로그램이 구문 분석 중에 잠시 '정지'된 것처럼 보입니다. 일어난다. 로드하는 동안보기를 보여주고 싶습니다. "로드 중"이라고 표시되거나 사라지고, 사라질 때까지 또는 빈 UITableView를 구문 분석이 끝날 때까지 표시합니다. 구문 분석이 완료되면 UITableView가 새로 고칩니다. – runmad

+0

이렇게하면 구문 분석 전에 하위 뷰를 추가하는 뷰를 만듭니다 ... – Daniel