일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 두근두근 자료구조
- Stack
- windosws wbcs
- 파이썬
- System
- c언어
- Java
- C
- 미로 탐색 알고리즘
- 백준
- web
- level13
- HTML
- 파일 시스템
- 정렬 알고리즘
- LoB
- PHP
- 자료구조
- 암호수학
- 큐
- 스택
- War Game
- SWiFT
- OSI
- pwnable.kr
- windosw 문자열
- ftz level13
- 재귀
- 시간복잡도
- ftz
Archives
- Today
- Total
나의 기록, 현진록
[IOS] UITableView / DataSource / Delegate / 테이블뷰 / 데이터소스 / 델리게이트 본문
반응형
- 테이블뷰 셀의 기본 기능
- 데이터소스와 델리게이트의 역할
테이블 뷰에 원하는 정보를 표시하고, 사용자 선택에 적절히 반응하는 테이블 뷰 구현을 위해 꼭 필요한 데이터소스와 델리게이트에 대해 알아보기
UITableView 객체는 데이터소스와 델이게이트가 없다면 정상적으로 동장하기 어려우므로 두 객체가 꼭 필요하다. MVC(Model-View-Controller) 프로그래밍 디자인 패턴에 따라 데이터소스는 애플리케이션의 데이터모델(M)과 관련 이 있으며, 델리게이트는 테이블 뷰의 모양과 동작을 관리하기에 컨트롤러(C)의 역할에 가깝습니다. 테이블뷰는 뷰(V)의 역할을 한다.
- 모델 : 데이터소스
- 뷰 : 테이블 뷰
- 컨트롤러 : 델리게이트
데이터소스(MVC - M)
- 테이블 뷰 데이터소스 객체는 UITableViewDataSource 프로토콜을 채택합니다.
- 데이터소스는 테이블 뷰는 생성하고 수정하는데 필요한 정보를 테이블 뷰 객체에 제공합니다.
- 데이터소스는 데이터 모델의 델리게이트로, 테이블 뷰의 시각적 모양에 대한 최소한의 정보를 제공합니다.
- UITableView 객체에 섹션의 수와 행의 수를 알려주며, 행의 삽입, 삭제 및 재정렬하는 기능을 선택적으로 구현할 수 있습니다.
- UITableViewDataSource 프로토콜의 주요 메서드는 아래와 같습니다. 이중 @required로 선언된 두 가지 메서드는 UITableViewDataSource 프로토콜을 채택한 타입에 필수로 구현해야 합니다.
@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)
델리게이트(MVC - C)
- 테이블뷰 델리게이트 객체는 UITableViewDelegate 프로토콜을 채택합니다.
- 델리게이트는 테이블 뷰의 시각적인 부분 수정, 행의 선택 관리, 액세서리 뷰 지원 그리고 테이블 뷰의개별 행 편집을 도와줍니다.
- 델리게이트 메서드를 활용하면 테이블 뷰의 세세한 부분을 조정할 수 있습니다.
- 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://developer.apple.com/documentation/uikit/uitableviewdatasource
https://developer.apple.com/documentation/uikit/uitableviewdelegate
반응형
'iOS' 카테고리의 다른 글
[Swift/iOS] URL 스키마 접근하기 / 다른 앱 열기 (0) | 2022.06.21 |
---|---|
[Swift/iOS] Kakao 지도 iOS API 지도 화면 영역 내의 좌표 (0) | 2022.06.16 |
[Swift/iOS] 스토리보드로 bottom Sheet 만들기 (0) | 2022.05.20 |
[Swift/iOS] 뷰의 크기가 Safe Area 보다 크게 조절이 안 될 때 (0) | 2022.05.12 |
[IOS] UITableViewCell / 테이블 뷰 셀 (0) | 2021.07.14 |