[iOS] UITableView의 프로토콜

나는 사과·2021년 4월 17일
0

TIL

목록 보기
15/17

UITableView의 UITableViewDelegate, UITableViewDataSource 프로토콜에 대해 알아보자.
TableView를 사용하면 필수적으로 채택해야하는 프로토콜들이다.

UITableViewDelegate

먼저, UITableViewDelegate프로토콜은 애플 개발자 문서에서는 다음과 같은 상황을 관리하기 위해서 이 프로토콜을 사용할 수 있다고 한다.

순서대로 보면,

  • 커스텀 header나 footer 뷰를 생성하고 관리하는 경우
  • 열이나 header, footer의 높이를 지정할 경우
  • 더 나은 스크롤을 지원하기 위해 높이 추정을 제공할 경우
  • 행의 내용을 들여쓰기할 경우
  • 열 선택에 반응할 경우
  • 테이블 열에서 스와이프와 다른 액션에 반응할 경우
  • 테이블의 내용의 수정을 지원할 경우

위와 같은 작업을 할 경우 UITableViewDelegate 프로토콜 내의 함수들을 이용해서 처리할 수 있다.

UITableViewDataSource

이 프로토콜은 데이터 관리가 아닌 데이터 출력의 관리를 담당하고 있다. 테이블의 데이터 관리 요청에 따라서 응답하게 된다. 이 외에도 다음과 같은 일을 한다.

  • 테이블의 섹션과 열의 수를 알려준다
  • 테이블의 각 열의 셀을 제공한다
  • 섹션의 header와 footer의 타이틀을 제공한다
  • 테이블의 인덱스가 Any일 경우 타입을 추정한다
  • 데이터를 바꿀 필요가 있는 사용자나 테이블 생성 업데이트에 반응한다

이 프로토콜에서 필수로 구현해야하는 메서드는 다음과 같다.

    func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
       // 섹션의 열의 수를 반환하는 메서드 
    }
    
    func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
       // 해당 열의 셀을 반환하는 메서드
    }

이 두 가지 메서드는 필수로 생성을 해야한다. 하기 싫어도 에러가 나타나서 빨간 버튼을 누르면 자동으로 생성해 줄 것이다.

UITableViewDataSourcePrefetching

ios10 버전 이상부터 지원하는 프로토콜이다. 앞으로 발생할 데이터 요구사항에 대해서 사전 경고를 제작해서 실행할 데이터 작업을 조기에 시작하도록 하는 프로토콜이다. 간단하게 cellForRowAt 매개변수를 갖는 메서드가 호출되기 전에 먼저 실행되어서 셀의 데이터를 미리 로딩하는 프로토콜인데 다음번에 주제로 다시 정리해보도록 하겠습니다!!


참고문서

Apple Developer Documentation - UITableView

0개의 댓글