2009-11-07 5 views
0

uitableview에있는 모든 셀을 미리로드하는 간단한 방법이 있습니까?uitableview에있는 모든 셀을 미리로드 할 수 있습니까?

모든 셀을 검사할지 여부를 변경하려면이 작업을 수행해야합니다. CellForRowAtIndexPath를 사용하고 사용자가 모든 셀의 선택을 취소 한 다음 보이는 셀을 확인하고 다시 스크롤하기 시작하면 선택한 셀이 선택 취소되거나 새로로드되는 셀이 선택됩니다.

가능한 한 모든 셀을 미리로드하는 것이 가장 쉬운 방법 인 것 같습니다.

감사합니다.

답변

3

다시 한 번 I wrote here을 문제의 한 가지 해결책을 설명하는 이전의 유사한 질문에 다시 읽으십시오.

다시 한 번 켜기/끄기 설정 배열 유지를 고려해야합니다. NSMutableArray 또는 int 또는 BOOL 값의 C 배열을 원하는대로 사용할 수 있습니다. 그러나 확실히 데이터 모델이 필요한 것처럼 들립니다.

-tableView:cellForRowAtIndexPath:은이 배열의 값을 조회합니다. 배열의 각 값은 어떤 식 으로든 테이블의 행에 해당합니다.

섹션이 하나만있는 경우 배열의 i 요소를 사용하여 테이블보기의 i 번째 행의 선택 상태를 설정할 수 있습니다. NSMutableArray을 사용하여 NSNumber을 저장하면 매우 쉽게 크기 조정을 처리 할 수 ​​있습니다.

섹션이 두 개 이상인 경우 배열 배열을 유지하십시오. 각 최상위 배열은 섹션에 해당합니다. 각 내부 배열은 섹션의 행에 해당합니다.

NSMutableArray을 사용하여 NSMutableArrayNSNumber으로 저장하면 크기 조정 및 섹션 추가 및 삭제를 매우 쉽게 처리 할 수 ​​있습니다.

그러면 -tableView:cellForRowAtIndexPath: 메서드는 배열의 값에 따라 체크 표시가 있거나없는 셀을 설정합니다.

데이터 모델을 사용하면 프로그래밍 방식으로 "모두 선택"및 "모두 선택 취소"버튼 작업을 자유롭게 수행 할 수 있습니다. 배열을

  1. 루프 및 레이블 "에"원래 가입시 선택하신 YES 또는 1 또는 각 값을 설정 : 당신은 세포 '모두 선택'하기 버튼을 클릭 예를 들어

    .

  2. -tableView:cellForRowAtIndexPath:으로 돌아가고 업데이트 된 배열의 값 상태를 기반으로 셀의 체크 표시 상태를 설정하는 메서드 인 [tableView reloadData]을 호출하십시오.

3

아니요,이 작업을 수행 할 수 없습니다. 셀이 특정 데이터를 나타내는 것처럼 보입니다. 그렇지 않습니다. 상단 셀이 화면에서 스크롤되면 일반적으로 재활용되어 하단 셀로 가져옵니다. 그래서 당신이 scolled 수있는 항목의 수백을 가지고 목록은 8 ~ 9 세포 alloc'ed 및 초기화 할 수 있습니다.

응용 프로그램의 아키텍처를 다시 생각해보아야합니다. "모두 선택 취소"하면 셀의 시각적 상태가 변경되어서는 안되며 셀이 나타내는 객체의 상태가 변경되어야합니다. 그러면 해당 인덱스 경로에서 객체의 셀을로드 할 때 해당 상태를 읽고 설정해야합니다 적절하게 체크 표시를하십시오.

셀의 시각적 상태 변화는 기본 모델의 변경에 항상 응답해야합니다.

5

세포를 데이터베이스로 사용하지 마십시오.

세포는 귀하의 데이터에 대한 좁은 창일뿐입니다. 셀은 기본 데이터에있는 몇 가지 객체를 보여줍니다. 모든 셀을 미리로드하여 모든 셀을 선택할 수있게하면 UITableView가 느리게 종료되거나 느리게 크롤링 될 수 있습니다. 특히 우리가 수백 가지 항목을 말하는 경우.

데이터의 모든 항목을 선택하려면 데이터를 직접 호출하여 개체를 선택하십시오. 그런 다음 reloadData으로 TableView에 데이터를 다시로드하고 모든 것이 올바르게 설정되면 셀에 선택된 상태가 표시됩니다.

UITableView에서 읽으십시오. Apple의 샘플을보십시오. 뷰와 컨트롤러에서 데이터를 구분해야합니다.

관련 문제