티스토리 뷰

iOS

[iOS] UITableView 톺아보기 - 1

국산 앨런 2019. 8. 1. 09:29

UITableView

테이블뷰는 iOS 애플리케이션에서 많이 활용하는 사용자 인터페이스입니다.

 

테이블뷰는 리스트 형태를 지니고 있으며 스크롤이 가능해 많은 정보를 보여 줄 수 있습니다.

 

테이블 뷰 기본 형태

 

UITableView 에는 3대 요소가 있습니다. 차근차근 하나씩 알아보겠습니다.

 

UITableViewCell

구조

기본적으로 테이블뷰 셀은 크게 콘텐츠 영역과 액세서리뷰 영역으로 구조가 나뉩니다.

  • 콘텐츠 영역: 셀의 왼쪽 부분에는 주로 문자열, 이미지 혹은 고유 식별자 등이 입력됩니다.
  • 액세서리뷰 영역: 셀의 오른쪽 작은 부분은 액세서리뷰로 상세보기, 재정렬, 스위치 등과 같은 컨트롤 객체가 위치합니다. 

테이블뷰를 편집 모드(Editing Mode)로 전환하면 아래와 같은 구조로 바뀝니다.

  • 편집 컨트롤은 삭제 컨트롤(빨간 원 안의 마이너스 기호) 또는 추가 컨트롤(녹색 원 안의 플러스 기호) 중 하나가 될 수 있습니다.
  • 재정렬이 가능한 경우, 재정렬 컨트롤이 액세서리뷰에 나타납니다. 재정렬 컨트롤을 눌러 셀을 드래그하면 위아래로 순서를 변경할 수 있습니다. 

 

기본 기능

UITableViewCell 클래스는 셀 콘텐츠에 다음의 기본 프로퍼티가 정의되어 있습니다.

  • textLabel: UILabel: 주제목 레이블
  • detailTextLabel: UILabel: 부제목 레이블
  • imageView: UIImageView: 이미지 표시
  • accessoryView: UIView? : 주로 컨트롤로 사용되며, 디폴트로 오른쪽에 위치함

 

 

 

UITableViewDastaSource, UITableViewDelegate

UITableView는 위의 두가지 핵심 프로토콜을 제공하는데, 관련 내용은 DelegatePattern 톺아보기 에서 설명하고 있습니다.

 

M (Datasource) - V (UITableView) - C (Delegate)

 

UITableViewDataSource

  • 테이블 뷰를 생성하고 수정하는데 필요한 정보를 테이블뷰 객체에 제공합니다.

  • 데이터 모델의 델리게이트로, 테이블뷰의 시각적 모양에 대한 최소한의 정보를 제공합니다.

  • UITableView 객체에 섹션의 수와 행의 수를 알려주며, 행의 삽입, 삭제 및 재정렬하는 기능을 선택적으로 구현할 수 있습니다.

@required 
// 특정 위치에 표시할 셀을 요청하는 메서드
func tableView(UITableView, cellForRowAt: IndexPath) 

// 각 섹션에 표시할 행의 개수를 묻는 메서드
func tableView(UITableView, numberOfRowsInSection: Int)

@optional
// 테이블뷰의 총 섹션 개수를 묻는 메서드
func numberOfSections(in: UITableView)

// 특정 섹션의 헤더 혹은 푸터 타이틀을 묻는 메서드
func tableView(UITableView, titleForHeaderInSection: Int)
func tableView(UITableView, titleForFooterInSection: Int)

// 특정 위치의 행을 삭제 또는 추가 요청하는 메서드
func tableView(UITableView, commit: UITableViewCellEditingStyle, forRowAt: IndexPath)

// 특정 위치의 행이 편집 가능한지 묻는 메서드
func tableView(UITableView, canEditRowAt: IndexPath)

// 특정 위치의 행을 재정렬 할 수 있는지 묻는 메서드
func tableView(UITableView, canMoveRowAt: IndexPath)

// 특정 위치의 행을 다른 위치로 옮기는 메서드
func tableView(UITableView, moveRowAt: IndexPath, to: IndexPath)

 

UITableViewDelegate

  • 델리게이트는 테이블뷰의 시각적인 부분 수정, 행의 선택 관리, 액세서리뷰 지원 그리고 테이블뷰의 개별 행 편집을 도와줍니다.

  • 델리게이트 메서드를 활용하면 테이블뷰의 세세한 부분을 조정할 수있습니다.

// 특정 위치 행의 높이를 묻는 메서드
func tableView(UITableView, heightForRowAt: IndexPath)
// 특정 위치 행의 들여쓰기 수준을 묻는 메서드
func tableView(UITableView, indentationLevelForRowAt: IndexPath)

// 지정된 행이 선택되었음을 알리는 메서드
func tableView(UITableView, didSelectRowAt: IndexPath)

// 지정된 행의 선택이 해제되었음을 알리는 메서드
func tableView(UITableView, didDeselectRowAt: IndexPath)

// 특정 섹션의 헤더뷰 또는 푸터뷰를 요청하는 메서드
func tableView(UITableView, viewForHeaderInSection: Int)
func tableView(UITableView, viewForFooterInSection: Int)

// 특정 섹션의 헤더뷰 또는 푸터뷰의 높이를 물어보는 메서드
func tableView(UITableView, heightForHeaderInSection: Int)
func tableView(UITableView, heightForFooterInSection: Int)

// 테이블뷰가 편집모드에 들어갔음을 알리는 메서드
func tableView(UITableView, willBeginEditingRowAt: IndexPath)

// 테이블뷰가 편집모드에서 빠져나왔음을 알리는 메서드
func tableView(UITableView, didEndEditingRowAt: IndexPath?)

 

 

 

 

 

참고 : https://www.edwith.org/boostcourse-ios/lecture/16887/

댓글
공지사항