2011-03-22 7 views
0

UITableView가 포함 된 UIViewController가 있습니다.UITableView reloadData

XML 파일에서 파싱 된 데이터로이 표를 채우려고합니다.

테이블 뷰를 처음로드 할 때 아직 데이터를 사용할 수 없습니다.

이보기를 다시로드하는 가장 좋은 방법은 무엇입니까?

구문 분석을 마친 후 self.TableView reloadData를 수행하려고했습니다.

reloadData 중에 구문 분석 결과가 유지되는 NSMutableArray가 불행하게도 발생합니다.

배열은 UIVivewController에서 설정됩니다.

NSMutablearray를 전역 변수로 설정해야합니까?

덕분에 무리

답변

8

배열은 UITableView 함유 뷰 컨트롤러의 바르 (인스턴스 변수)이어야한다. 당신이 완료되면 ivar에 데이터가 채워 져야하고 [self.TableView reloadData]을 사용하여 아무런 문제없이 UITableView을 채울 수 있어야합니다. 델리게이트 또는 데이터 소스 콜백에서 모든 객체를 제거하거나 배열을 다시 초기화하지 않는지 확인하십시오.

+0

내 문제는 뷰가로드 될 때 해고되는 것처럼 구문 분석을 두 번 호출한다는 것입니다. 배열을 다시 초기화하는 것이 맞습니다. 처음에는 전역 변수를 사용하려고했지만 빠른 패치 일 것이라고 생각합니다. 결국 나는 두 번 파싱하고 싶지 않습니다. 두 번째 구문 분석을 방지하기 위해 플래그를 설정하거나 NSNotificationCenter를 사용해야합니다. – user643097

1

예는, 그 컨트롤러 파일에 대한 전역으로 그 NSMutableArray를 가져 가라.

테이블 뷰를 보유하고있는 컨트롤러의 NSMutableArray에서 값이 커지는지 확인하십시오.

간단히 테이블을 다시로드하십시오.

안부 샴

+0

전역 변수가 아닌 인스턴스 변수입니다. 하지만 그게 아이디어 야. – pablasso

2

전역 변수로 만들지 말고 인스턴스 변수로 만듭니다. 마찬가지로 :

@interface MyViewController : UIViewController { 
    NSMutableArray* parsedDataArray; //declare the array here 
} 
@end 

하지만 그 이상

는, 그래, 구문 분석이 완료된 후 reloadData를 호출하는 것은 합리적이다. reloadData이 호출 될 때 구문 분석 결과를 재설정하지 않도록 코드를 수정하십시오.

+0

구문 분석을 두 번 이상 수행하지 못하도록하는 플래그를 만들어야한다는 것을 의미합니까? 이제 파싱은 ViewDidLoad 이벤트에서 시작됩니다. – user643097

관련 문제