티스토리 뷰
TableView DataSource, Delegate
오늘은 TableView의 Datasource와 Delegate에 대해 알아볼거에요!
그 전에 TableView가 무엇인지 먼저 간단하게 살펴볼까요?

테이블뷰는 행과 섹션을 가지고 있고, 세로 스크롤이 가능한 것 같아요! 테이블의 각 행에는 앱과 관련된 정보들이 표시가 되는 것 같구요.
섹션은 관련행들을 보기 쉽게 그룹화해주는 것 같네요! 연락처앱에서 ABC로 묶어놓은 것 처럼요!!
테이블뷰는 다양한 객체들간의 collaboration 인 것 같은데요. 간단하게만 살펴보면 cell, table view controller, data source, delegate 인 것 같네요~~
그럼 어떤식으로 사용이 되는지 잠깐만 볼까요?

공식문서에는 '단일 열에 배열된 행을 사용하여 데이터를 표시하는 뷰' 라고 되어있는 걸 볼 수 있네요
또한 UIScrollView 상속을 받고 있으므로 Scroll은 당연히 사용이 가능할거고, 관련 메서드 역시 사용가능하겠죠??
테이블뷰를 사용하려면 기본적으로 DataSource 랑 Delegate가 필요하다고 많은 블로그에서 외치고 있는데요
저는 여기서 DataSource랑 Delegate에 대해서 알아볼거에요! 왜 쓰는지에 대한 글은 생각보다 많이 없더라구요 😥
그래서 사용하기 전에 왜 사용해야 하는지 조금이라도 알고 넘어가면 좋을 것 같더라구요
자 그럼 얘네들이 무슨 역할을 하냐!!!!!
우선 DataSource는 데이터를 받아 이를 뷰에 그려주는 역할을 해요.
즉, 무엇을 어떻게 보여줄 것인가? 에 대한 것이죠
MVC 중 모델에 가깝다고 생각해볼수도 있겠죠?
그러니까 DataSource 가 없으면 테이블뷰에 아무것도 띄울수가 없겠죠??
func tableView(tableView: UITableView, cellForRowAt: IndexPath) -> UITableViewCell
func tableView(tableView: UITableView, numberOfRowsInSection: Int) -> Int
func tableView(tableView: UITableView, titleForHeaderInSection: Int) -> String?
그래서 DataSource 메서드는 위와 같이, 셀에 무슨 데이터를 넣을지, 섹션 안에 행은 몇개를 가질 것인지 처럼 뷰의 역할을 담당하고 있다고 볼 수 있어요!
테이블 뷰의 시각적 모양에 대한 최소한의 정보를 제공한다~ 라고 볼 수 있죠
그럼 이제 Delegate는 무얼 하나 한번 살펴볼까요??
Delegate는 어떤 행동에 대한 동작을 제시한다고 이해하면 될 것 같아요.
무슨 말이냐...면 사용자가 보이는 것들 중 터치라던지, 무엇인가에 대해 액션을 취한다면 그에 대한 동작을 수행한다!!! 라는 거죠.
Delagate는 테이블뷰의 동작이랑 모양을 관리하니까 MVC 중에서는 컨트롤러와 가깝다고 생각하면 좋을 것 같네요!
그래서 뭐... Delegate 없이도 테이블뷰를 만들어서 볼 수 있기는 해요..ㅎ
func tableView(tableView: UITableView, didSelectRowAt: IndexPath)
func tableView(tableView: UITableView, heightForRowAt: IndexPath) -> CGFloat
위와 같이 row를 클릭하면 뭐할래? 와 같은 동작과 더불어 테이블뷰의 세세한 부분을 컨트롤 할 수 있다고 보시면 될 것 같습니다!!
간단 요약본을 표로 나타내보았어요!!
| UITableViewDataSource | UITableViewDelegate |
| 총 섹션은 몇개죠? | 1행의 높이는 얼마에요? |
| 두번째 섹션의 행은 몇개죠? | 3행을 선택하면 난 뭘하죠? |
| 두번째 행에는 무슨정보를 보여줄거죠?? | 2행은 들여쓰기 얼마나 할거에요? |
오늘 이렇게 TableView의 Datasource와 Delegate에 대해 알아봤는데요! 틀린 개념 및 질문은 언제든지 환영입니다!!!
'Swift' 카테고리의 다른 글
| Swift - 스토리보드를 분할하고 화면 이동하기!!! (0) | 2021.12.19 |
|---|---|
| Swift - 의존성 주입 (Dependency Injection) ...? (0) | 2021.12.12 |
| Swift - Codable..? (1) | 2021.12.07 |
- Total
- Today
- Yesterday
- 화면 이동
- 스토리보드 분할
- Operator
- Combine
- Swift
- ios
- 취준
- 롯데그룹 공개채용
- 프로젝트에 적용
- 코딩테스트
- Encodable
- 운영체제
- 개발자 취업
- 반효경
- Publisher
- Codable
- 야곰
- DIP
- UITableViewDelegate
- Decodable
- 의존성 주입
- 롯데 렌탈
- 야곰 아카데미
- 프로그래머스
- Parse
- subscriber
- 공개 채용
- dataSource
- osi7계층
- UITableViewDataSource
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |