본문 바로가기

Swift(IOS)

[내용정리] Swift - UITableVIew Delegate, DataSource 종류

UITableViewDataSource - 테이블 뷰 생성, 데이터를 받아 view를 그려주는 역할

  • numberOfRowsInSection:  나타낼 cell의 갯수 정의 - 필수

  • cellForRowAt: cell을 어떤식으로 나타낼건지 (어떤 데이터를 활용하여 나타낼것인지) - 필수

  • numberOfSections: 총 섹션의 갯수 정의

  • titleForHeaderInSection: 특정 섹션의 헤더 타이틀 정의

  • titleForFooterInSection: 특정 섹션의 풋터 타이틀 정의

  • canEditRowAt: 특정 위치의 행의 편집 가능여부 정의

  • canMoveRowAt: 특정 위치의 행을 터치로 재정렬 가능여부 정의
    true로 반환시에 편집모드 들어갈경우 행의 위치를 사용자 마음대로 변경할 수 있음

  • moveRowAt: 행이 다른위치로 이동되면 이동경로 알려주는 메소드
    canMoveRowAt에서 true로 변경되어 사용자가 edit환경에서 행의 위치를 임의로 변경할 때
    해당 행의 원래 위치(sourceIndexPath)에서 destinationIndexPath로 변경 위치를 알려주는 메소드

  • sectionIndexTitles: 테이블뷰 섹션 인덱스 타이틀을 물음

  • sectionForSectionIndexTitle: 인덱스에 해당하는 섹션을 알려주는 메소드

  • commit: 스와이프 모드, 편집모드에서 버튼 선택시 호출(해당 메소드에서 행의 변경사항을 commit 해야함)

 

UITableViewDelegate - 행의 Action관리, 테이블 뷰의 개별 행 편집 도움

DataSource와 다르게 필수구현 메소드 없음

  • didSelectRowAt : 해당 cell 선택시에 실행

  • didDeselectRowAt: 해당 cell 선택해제시에 실행

  • heightForRowAt: 행의 높이 설정

  • viewForHeaderInSection: 지정된 섹션의 헤더에 표시될 뷰 설정

  • viewForFooterInSection: 지정된 섹션의 풋터에 표시될 뷰 설정

  • heightForHeaderInSection: 지정된 섹션의 헤더 높이 설정

  • heightForFooterInSection: 지정된 섹션의 풋터 높이 설정

  • editingStyleForRowAt : 테이블뷰 컨텐츠의 수정 편집기능 제공
    편집모드에서 삭제버튼 클릭시 선택된 cell이 어떤cell인지 알려줌
    보통 해당cell에서 해당cell 삭제를 구현함

  • willBeginEditingRowAt: 테이블뷰가 편집모드에 들어갈 때 호출

  • didEndEditingRowAt: 테이블뷰가 편집모드에서 나올때 호출

  • willDisplay: 테이블뷰의 셀에 표시될 때 호출

  • didEndDisplaying: 셀이 화면에서 사라지면 호출