rudin_.log
로그인
rudin_.log
로그인
[iOS] TableView Delegate Pattern
RudinP
·
2024년 2월 20일
팔로우
0
iOS
tableview
스터디
0
Study
목록 보기
169/227
개념
하나의 객체가 다른 객체의 기능을 대신 처리해주는 패턴
위임받은 객체를
델리게이트 객체
라고 한다.
공통 특징
첫번째 파라미터로 메소드를 호출한 객체를 보내줌
TableView
테이블 뷰의 셀을 선택했을 때 발생해야 하는 이벤트는 한두가지가 아니다.
따라서 테이블 뷰 자체는 어떤 항목이 선택되었는지만 인식하고, 셀이 선택되었을 때의 이벤트는 델리게이트 객체가 처리한다.
이름이 ~dataSource, ~delegate 로 끝나는 속성들이 있는데, 위임받을 객체를 이 속성에 저장하면 된다.
DataSource
테이블 뷰 자체는
몇 개
의 셀을
어떤 내용
으로 표시할 지 모른다.
따라서 셀의 개수, 내용을 DataSource에서 채워 리턴해주어야 한다.
이렇게 필요한 데이터를 제공해주는 객체를
DataSource
라고 한다.
Delegate
이벤트를 대신 처리해주는 객체.
테이블뷰는 델리게이트에게 이벤트가 발생했다는 것을 알려주고, 처리는 델리게이트가 하는 방식.
Protocol
델리게이트 객체는 반드시 프로토콜에 선언되어있는 대로 메소드를 구현해야 함.
델리게이트 패턴으로 구현한 메소드는
우리가 직접 호출하지 않는다.
에러의 종류
Required Request 에서 Delegate 객체가 없을 경우 -> Crash
필수 메소드가 구현되어있지 않을 경우 -> Build 불가
Optional Request 에서 Delegate 객체가 없을 경우 -> 이벤트 무시(무반응)
Optional Request 에서 선택적 메소드가 구현되어있지 않을 경우 -> 이벤트 무시
Delegate 구현 Step
1. 레퍼런스를 보고 델리게이트가 필요한지 확인
2. 필요하다면 프로토콜에서 필수 메소드 확인
3. 객체를 연결(스토리보드 혹은 코드에서 연결)
보통은 VC가 객체가 됨.
4. 프로토콜에 선언된 필수 메소드 구현
VC에서 구현
공식 문서에서
required
라고 표시되어 있다.
TableView Delegate
1. TableView 추가
2. TableView cell 추가
reuse Identifier 설정
3. VC에 DataSource 연결
테이블뷰에 오른쪽 마우스 클릭 시 커넥션 웰 팝업
4. VC에 UITableViewDataSource Protocol 채택
5. 필수 메소드 구현
RudinP
곰을 좋아합니다. <a href = "https://github.com/RudinP">github</a>
팔로우
이전 포스트
[iOS] TableView 개요
다음 포스트
[iOS] Table View 구현 분석
0개의 댓글
댓글 작성