테이블 뷰를 사용하기 위해서는 UITableViewDataSource, UITableViewDelegate 두 객체가 반드시 필요하다.
오늘은 이 두가지 객체의 역할에 대해서 알아보자.
도대체 이들은 테이블 뷰에서 각각 어떠한 기능을 담당하는걸까?
테이블 뷰의 동작과 모양을 관리 - MVC 패턴의 C(Controller)의 역할
- 테이블 뷰의 시각적인 부분 수정
- 행 선택관리, 개별 행 수정, 액세서리 뷰 지원
- 테이블 뷰의 세세한 부분을 조정 가능
Delegate의 모든 메서드는 필요시 사용하면 되는 선택사항이다.
테이블 뷰에 필요한 정보를 제공 - MVC 패턴의 M(Model)의 역할
- 테이블 뷰의 생성 및 수정시 필요한 정보 제공
- 테이블 뷰 시각적 형태에 관한 최소한의 정보 제공
- 섹션과 행의 수를 알려줌, 행 삽입, 삭제 및 재정렬 기능을 선택적 구현 가능
모든 메서드가 선택사항인 Delegate와 달리 DataSource에는 필수로 두가지 메서드를 구현해줘야한다.
@required
// 🍏 특정위치에 표시할 셀을 요청하는 메서드
func tableView(UITableView, CellForRowAt: IndexPath)
// 🍏 각 섹션에 표시할 행의 개수를 묻는 메서드
func tableView(UITableView, NumberOfRowsInSection: Int)
*@required : 테이블 뷰를 만들기 위해서 반드시 구현 필요(해당 프로토콜을 채택했으면 필수로 구현해야하는 함수)
최종적으로 UITableView는 MVC 패턴의 V(View)의 역할을 함으로써 완전한 MVC 패턴구조를 이루게 된다.