Delegate 와 DataSource

2022. 5. 19. 12:47·iOS/UIKit

TableView를 기준으로 설명 , (아마도) 동일한 프로토콜이 있다면 같은 기능을 수행할 것입니다.

Delegate

  • TableCell을 탭(클릭) 했을때 어떠한 기능을 수행하는 권한을 위임하는 프로토콜
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) 
func tableView(tableView: UITableView, willBeginEditingRowAtIndexPath indexPath: IndexPath)
  • 외울필요? X 자동완성을 사용하자 ( 우리 신세대임..ㅋ )
  • 메서드의 인자만 봐도 어떤 기능을 수행 할 지 짐작이 가능하다
  • didSelectRowAtIndexPath → 이름부터가 선택 됐을때, 어떠한 동작을 수행할 것인지 에 대한 정의를 내리면 될것 같다
  • willBeginEditingRowAtIndexPath ⇒ 공식문서 의 내용을 보니 행의 삭제와 같은 기능을 수행 할 때 어떤 동작을 결정할 지를 정의하면 된다

⇒ 물론 Delegate의 func들은 Optional이기 때문에 반드시 정의 할 필요는 없다.

 

DataSource

  • TableView의 Cell을 어떻게 보여줄가 에 대한 권한을 위임(?) 하는 프로토콜
  • 몇개의 행을 표시할 것인지? 각 행에는 어떤 내용을 보여줄 것인지등등 간단히 말해 View를 그리는 역할을 수행한다고 생각하면 된다
func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -> UITableViewCell
func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
  • 위 두가지 메서드는 Datasource 프로토콜을 채택 할 때 반드시 정의해 줘야 하는 메서드!
  • 외우지 말자.. ( Datasource 채택하면 빨간줄 뜨면서 자동으로 채워진다! )
  • numberOfRowsInSection ⇒ 이름만 봐도 몇개의 섹션을 나눌것 인지 정의하면 된다. 말 그대로 몇개의 행을 테이블 뷰에 표시 해 줄것인지 정의해 주면 된다 ( 정수를 반환하면 반환된 값 만큼 테이블뷰의 행이 생성된다 )
  • cellForRowAtIndexPath ⇒ 각 행(cell)에 어떤 내용을 보여 줄 것인지 정의해 주면 된다. 말 그대로 어떤 내용을 표시해 줄지에 대한 정의를 내리면 되고, indecPath 를 통해 각 행이 for 구문 처럼 순차적으로 정의된다 ( 이해가 안가면 직접 구현해 보자 )
  • 두개의 메서드 말고 추가적인 메서드들도 있으나, 모두 외울 필요없다, 필요하면 그때 그때 찾아 사용하자

⇒ 한줄 정리 : Delegate는 어떠한 동작 을 수행, DataSource는 어떠한 내용 을 표시

'iOS/UIKit' 카테고리의 다른 글
  • [storyboard] TableView 알아보기
  • [Storyboard] TabBar Controller
  • ViewController LifeCycle
Jeohong
Jeohong
기억 보단 기록을
  • Jeohong
    Chikong Devlog
    Jeohong
  • 전체
    오늘
    어제
    • 분류 전체보기 (186)
      • ---- 개발 컨텐츠 ---- (0)
      • iOS (30)
        • Swift 문법 (1)
        • iOS 개념 (12)
        • HIG (5)
        • SwiftUI (7)
        • UIKit (4)
      • Side Project (0)
      • 개발서적 (4)
        • 객체지향 사실과 오해 (4)
      • 알고리즘 (74)
        • 자료구조 개념 (2)
        • Swift (25)
        • JavaScript (47)
      • ---- 회고 계획 컨텐츠 ---- (0)
      • 계획 및 일기 (10)
      • 회고록 (1)
      • 컨퍼런스 탐방 (1)
      • 미드로 영린이 탈출하기 (1)
      • ---- Previous content ---- (0)
      • Frontend (2)
        • HTML & CSS (2)
      • KITRI 수업 (17)
        • 리눅스 (14)
        • 네트워크 (2)
      • 42seoul (17)
        • Bonr2code (9)
        • 넋두리 (7)
        • 멘토특강 (1)
      • 해킹 실습 (20)
        • 해커스쿨 - F.T.Z (19)
        • WebGoat (1)
      • Tensorflow로 시작하는 NLP (1)
        • 예제 (1)
      • 자연어처리 입문 (1)
        • 이론 (1)
      • 텐서플로로 배우는 딥러닝 (7)
        • 이론 (2)
        • 예제 (5)
  • 블로그 메뉴

    • 홈
    • 태그
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    IOS
    자료구조
    코딩
    42seoul
    스위프트
    Algorithm
    SwiftUI
    라피신
    swift
    본과정
    프로그래머스
    1서클
    네트워크
    백준
    hig
    boj
    알고리즘
    javascript
    42서울
    개발자
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
Jeohong
Delegate 와 DataSource
상단으로

티스토리툴바