2010-05-28 3 views
0

UITableView에 모든 행을 미리로드하도록 지시하는 방법이 있습니까?모든 행을 미리로드하도록 UITableView에 지시하는 방법?

tableView는 여러 주석 (최대 80 개의 주석)을 표시합니다.

그래서 내 CommentCell은 Setter를 사용하여 셀을 특정 주석에 적용합니다.

-(void)setComment:(Comment *)newComment { 
if (newComment != comment) { 
    [comment release]; 
     comment = [newComment retain]; 
     /* 
     * set the cells view variables here 
     */ 
    } 
} 

이 특정 설정 도구는 많은 처리 리소스를 필요로하며 스크롤링은 다소 느려집니다. 보장하기 위해

dequeueReusableCellWithIdentifier: 

를 호출 할 때

나는 "newComment는"이전 "코멘트"에 해당된다는 대신 정적 cellIdentifier의 코멘트 별 reuseIdentifier을 사용하고 있습니다.
사실 이미로드 된 셀을 스크롤 할 때이 기능이 뛰어납니다.

처음으로 댓글을 스크롤 할 때 여전히 지옥처럼 뒤떨어져 있습니다.

내 질문에 나를 이끄는 :
모든 셀을 미리로드하려면 tableview 말할 방법이 있습니까? (나는 의심 스럽습니다)
또는
"dequeueReusableCellWithIdentifier :"에 의존하는 대신 내 자신의 캐시를 구현해야합니까?

답변

2

댓글 reuseIdentifier가 모든 것이 느려지거나 (적어도 도움이되지 않는 것일 수 있음) 유의하십시오. UITableViewCells에 reuseIdentifier를 사용하는 이유는 필요할 때마다 새 셀을 할당하려고하면 이미 만들어진 셀을 재사용 할 수있는 것처럼 성능이 좋지 않기 때문입니다.

셀의 속성을 설정하고 테이블 뷰를 스크롤 한 후 셀을 다시 사용할 수 있도록 주석을 미리 계산하는 것이 좋습니다.

+0

나는 일반적으로 cell-reuseIdentifiers를 사용합니다.이 경우도 예외는 아니지만 몇 시간의 테스트 후 디버깅과 다시 쓰기가 명확 해졌으며 래그는 새로운 셀을 할당하고 setter를 사용하는 조합에서 비롯된 것입니다. 그래서 몇 가지 조합을 시도하고 세터 혼자조차도 끔찍한 지연을 만듭니다 (나는 과장을 조금 과장하지만 이러한 지연은 실제로 빤다). 그래서 셀 특정 reuseIdentifier를 사용할 수 없습니다. – Infinite

1

아니요, 데이터를 dataSource에 미리로드해야합니다. 필요한 모든 것을 배열에 넣고 미리로드 된 객체의 배열에서 테이블의 셀을 채 웁니다.

관련 문제