아마 이번 포스팅은 기본적인 TableView의 구조와 개념에 대해 정리하고, TableView를 활용한 웹서버 통신(JSON Parsing), Alamofire 라이브러리 사용까지 정리하고자 한다.
- TableViewController
- Table View (다중의 리스트를 가질 수 있음)
- Table View Cell (하나의 행)
- Content View
- Cell Content : 셀에 표현될 컨텐츠
- Accessory View : 컨텐츠의 부가정보 암시
tableView(_ tableView: numberOfRowsInSection section:) : 특정 섹션내에 셀의 갯수를 리턴함
tableView(_ tableView: cellForRowAt indexPath:) : 실제로 셀의 컨텐츠를 생성해서 셀을 리턴하는 메서드
tableView(_ tableView: didSelectRowAt indexPath:) : TableView에서 셀을 선택한 경우 이벤트 처리를 담당함
1. 테이블 뷰가 화면에 셀을 표시하기 위해 자신의 데이터 소스에 요청함
2. 데이터 소스는 테이블 뷰의 재사용 큐(Reuse Queue)에서 사용 가능한 셀이 있는지 확인해서 있으면 꺼내서 사용하고 없으면 새로운 셀을 생성
3. 셀을 원하는 방식으로 구성한 다음 반환하면 테이블 뷰가 이 셀을 받아 화면에 표시함
4. 사용자가 테이블 뷰를 스크롤함에 따라 화면을 벗어난 셀은 테이블 뷰에서 제거되지만, 완전히 삭제하는 것이 아니라 재사용 큐에 추가
테이블 뷰가 표시하는 뷰는 내용만 다를 뿐 모양은 반복된다.
tableView: cellForRowAt:에서는 테이블 뷰 내부에 있는 버퍼를 이용해 메모리를 효율적으로 사용하는 기법
화면 밖으로 사라지는 테이블 셀을 임시로 지니고 있다가 새로 그려야하는 셀을 만들기 전에 재사용 큐를 먼저 확인함 → 동일한 셀이 있으면 이미 만들어진 재사용 큐에 있는 테이블 뷰 셀에 값을 바꿔서 테이블 뷰에 넣어줌