나는 장치 addressBook을 처리하는 테이블을 가지고 있는데, 그 테이블은 쉽게 500+ 접촉을 가질 수있다. 또한 테이블은 매 3 초를 업데이트받을 후 모든 갱신에 코드많은 행을 가진 UITableView 성능
[tableContacts beginUpdates];
[tableContacts reloadRowsAtIndexPaths:arr withRowAnimation:UITableViewRowAnimationNone];
[tableContacts endUpdates];
을 실행 , 나는 셀과 하나 개의 이미지 (존재)의 텍스트를 업데이트합니다. 셀에 대한 모든 계산은 백그라운드 스레드의 핸들입니다. 문제는 대부분 스크롤이 원활하지 않다는 것입니다. 그리고 내가 스크롤을 시작하기 위해 테이블을 터치하면 스크롤이 1 초 정도 (이 시간에 테이블이 상쾌하기 때문에) 생각하지 않습니다.
그래서 짧은 시간에 데이터를 가져 와서 새로 고쳐야하는 매우 긴 테이블을 어떻게 처리해야합니까?
'UITableView'가 어떻게 작동하는지에 대한 오해가 있습니다. 'cellForRowAtIndexPath' 메서드는 항상 새로운 셀을 생성합니다 (아마도 재활용 된 셀을 재사용 할 수도 있습니다). 기존 테이블을 반환하지 않습니다. 그것은'UITableView'에 의해서만 호출됩니다. 직접 호출하는 경우 표시되지 않는 새 표 셀을 만듭니다. – Codo
오해가 없습니다. tableView create & display cycle 외부에서'cellForForRowAtIndexPath'를 호출하면 셀이 생성되어 표시되면 기존 셀에 대한 참조가 제공됩니다. 나는'indexPaths'가'indexPathsForVisibleRows' 배열 내에 있으면 추가 체크가 필요하다는 것에 동의합니다. 어쨌든 - 행을 다시로드하지 않고 NSFetchedResultsControllerDelegate 메소드 (또는 그 밖의 다른 업데이트 메소드)에서 셀의 속성을 어떻게 업데이트합니까? –