2013-09-06 4 views
0

iOS RSS 리더 앱에서 작업 중입니다. 모든 섹션 헤더는 기사 제목을 표시하는 데 사용됩니다UITableView ReloadData 대기열에서 제외 된 셀을 사용하지 않음

UINib *sectionHeaderNib = [UINib nibWithNibName:@"HeadlineView" bundle:nil]; 
[self.newsTable registerNib:sectionHeaderNib forHeaderFooterViewReuseIdentifier:SectionHeaderViewIdentifier]; 

: 내 애플 사용자 정의 섹션 헤더와 jQuery과 구현합니다. "이미 본"기사와 새 기사를 변경할 수있는 옵션이 있습니다. I는 옵션 간을 전환 할 때마다, 테이블 뷰 데이터 배열 정도로 변화 I는 jQuery과 ReloadData 호출해야

[self.newsTable performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:YES]; 

I 그것이 붙어 보인다 (부하 1 초 이상을 조금 얻어이 메소드 호출

) 그것은 dequeued 섹션 헤더를 사용하는 대신 모든 섹션 헤더를 다시로드하기 때문입니다. 테이블 뷰를 스크롤 할 때 모든 것이 정상적으로 동작하고 dequeue가 제대로 작동합니다.

섹션 헤더를 초기화 할 때마다 3 개의 제스처 인식기를 설정하고 그 시간이 오래 걸립니다. 섹션 헤더가 대기열에서 제외되면 제스처 인식기는 이미 설정되어 있으므로 빠릅니다. 내가 셀/부분 부하의 작업을 소비하는 다른 시간을 수행하고 있지 않다

NowsHeadlineHeaderView *sectionHeaderView = [self.newsTable dequeueReusableHeaderFooterViewWithIdentifier:SectionHeaderViewIdentifier]; 

:

는 디큐 코드입니다. 내가 reloadData를 사용하고 어떻게이 그렇게 될 것 해결할 수있을 때

왜 또 다시 섹션 헤더를 초기화하는있는 tableview입니다 빠른

답변

0

강제 등 대기열 세포/헤더 /에 슬레이트 깨끗한 reloadData 잎사귀 호출. the documentation에서 :

부르는 방법 (reloadData) 등 세포, 섹션 헤더와 푸터 인덱스 어레이를 포함하는 테이블을 구성 에 사용되고, 모든 데이터를 다시로드한다. 효율성을 위해 표보기는 표시되는 행만 을 다시 표시합니다. 테이블 이 다시로드 된 결과 축소되면 오프셋을 조정합니다.

세포 또는 섹션을 추가하거나 빼는 경우 insertRowsAtIndexPaths:withRowAnimation:deleteRowsAtIndexPaths:withRowAnimation:을 대신 사용해보십시오.

NowsHeadlineHeaderView 설정이 비효율적 인 것으로 의심되는 경우도 있습니다.

+0

내 테이블이 50 개의 섹션으로 구성되어 있고 완전히 다른 데이터로 5 개의 섹션으로 만 구성되도록 테이블 뷰를 변경하려면 50 개의 섹션을 삭제하고 5 개의 섹션을 추가해야합니까? 나는이 방법이 훨씬 더 많은 시간이 걸릴 것이라고 생각한다. –

+0

@ItaiCaspi 글쎄, 그래, 모든 경우에 엣지 케이스가있다. 하지만 동기 네트워크 데이터로드처럼 'NowsHeadlineHeaderView'에서 비효율적 인 일을하고 있다고 의심됩니다. – kamprath

+0

NowsHeadlineHeaderView 클래스는 정말 간단합니다. 배열에서만 업데이트 할 UILabel이 3 개 있습니다. 또한 init 블록에 세 개의 제스처 인식기가 설정되어 있습니다. 그게 다야. 그래서 나는 그것이 문제를 일으키지 않는다고 확신한다. –

관련 문제