나는 UITableView
셀을 사용자 지정하고 셀에 차트가있는보기 (Charts
라이브러리)가 있습니다. 차트 데이터가 꽤 큽니다 (컨트롤러의 속성으로 저장 됨). 몇 초 동안 나타납니다. 거기에 약간의 시차가 나타 테이블보기를 스크롤 할 때 맞춤형 셀을 사용하여 UITableView를 스크롤 할 때 성능 향상
TableViewCell
클래스
에 setSelected
방법의 일부 차트의보기 설정 (단지 약간의 UI 변경) 할. 나는 그것이 표시하고자하는 무거운 내용 때문에 일어난다 고 생각합니다. 이 배열에서 CellForRowAt
방법 쇼 세포에서, 배열에 저장, ViewDidAppear
에
로드 모든 셀 : 나는 약 4 해결책을 생각했습니다이 문제를 해결하는 동안
.
테이블보기를 스크롤보기에 놓으면 테이블보기의 모든 셀에 맞도록 내용의 높이를 크게 만듭니다.
차트로드는 셀로드 및 내용보기가 나타난 후에 만 수행하십시오. 차트로드가 켜져있는 동안 활동 표시기를 표시합니다.
차트를 백그라운드 스레드에로드합니다.
처음 두 가지 접근 방식은 나에게 메모리 관리 측면에서 좋지 않은 것처럼 보입니다. 그러나 나는 확실하지 않습니다. 아마도 내가 알지 못했던 일반적인 해결책이있을 것입니다.
프로젝트의 일부 코드 예제 :
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let graphCell = tableView.dequeueReusableCell(withIdentifier: Cells.graphViewCell) as! GraphViewCell
graphCell.lineChartView.data = track.chartDataForHeight()
return graphCell
}
여기 track
이야 내가 차트 데이터를 저장하는 변수입니다.
주 스레드에서 UI를 많이 업데이트하면 tableviewscroll에 영향을줍니다. 그래서 당신의 3 가지 접근 방식은 좋을 것이고 모든 접근 방식 업데이트가 메인 스레드에서 이루어져야하기 때문에 4 번째 접근 방식에 문제가있을 것입니다 – Vinodh