2016-09-10 2 views
0

이 페이지에이 항목이있는 항목과 해당 문제에 대한 자습서를 제공하는 웹 사이트를 이미 찾았습니다. 그러나 아무 것도 잘 작동하지 않았습니다.테이블로드 preload cell 및 리로드 방지

자습서 슬픈 나는 내 tableView의 높이를 두배로해야합니다. 그래서 이전에 셀을로드 했었지만 더 높은 tableView를 사용하면 마지막 셀에 도달하지 못했습니다.

내 문제는, 나는 내 애플 리케이션 메인 페이지를 표시하는 tableView를 사용합니다. 이 메인 페이지는 주제가있을 때마다 그 주제에 필요한 경우 예를 들어지도가있는 셀, 그림이있는 셀 및 때로는없는 셀을 보여줍니다. 이제지도 또는이 그림을로드하기 때문에 항상 내보기로 스크롤하려고하는 경우 문제가 발생합니다. 로드 된 셀이 이미 삭제 되었기 때문에 다시 스크롤합니다. cellType (mapCell, pictureCell, textCell)을 켜고 끌 수있는 가능성 때문에 tableView를 사용했습니다.

메모리 문제로 인해이 기능을 이해할 수 있지만 제 경우에는 그리 많지 않습니다. 주제를 변경하기 전까지는 모든 셀이 미리로드되고 메모리에 남아 있으면 더 좋을 것입니다.

내 tableView에 이러한 행동이 발생했음을 알리는 방법이 있습니까?

감사 인사 많이 감사합니다.

답변

0

셀 배열을 선언하십시오.

주제가 변경 될 때마다 다음 단계를 따르십시오.

  1. 취소합니다 배열

  2. 만들고 모든 셀 어레이에 추가 구성 할 수 있습니다.

  3. 행 색인을 사용하여 데이터 소스 메소드에 이들 셀을 리턴하십시오. 여기서 tableview dequeue 메소드를 사용하지 마십시오.

+0

오, 난 너무 당황 스럽다! 얼마나 단순한가! 정말 고마워요! – kuemme01

+0

이 방법이 효과적이지만 메모리 효율이 떨어집니다. 모델 데이터를 미리로드하고 셀 대기열 제거 메소드를 사용하는 것이 좋습니다. –

1

나는 다른 접근 방식을 제안합니다. 테이블 뷰 컨트롤러를 설정하여 셀에 자리 표시 자 이미지를 설치하고, 디스크에 캐시하는 비동기 다운로드를 트리거 한 다음 다운로드가 완료되면 여전히 다운로드 된 내용으로 셀을 업데이트하십시오.

이 모든 작업을 수행하는 다양한 타사 프레임 워크가 있습니다.

+0

네, 또 다른 방법이지만, 나는 괜찮다고 생각합니다! 나는 30-60 메가 비트 사이의 메모리 사용량을 가지고 있습니까? – kuemme01

+0

더 새로운 장치에 30-60 메가 비트는 문제가 아니어야한다. 얼마나 많은 테이블 뷰 항목이 있고 얼마나 큰 이미지입니까? –

+0

iOS 9는 4 초 이상 실행됩니다. 그것은 현재 가장 낮은 사양의 장치입니다. iOS 10은 4를 버리고 5 이상에서만 실행됩니다. –