본문 바로가기
🍎iOS프로그래밍/겨울방학 특강

Swift-프로토콜과 델리게이트

by 둥둥동동# 2022. 1. 14.
728x90

 

순서

프로토콜

델리게이트

데이터소스

 

프로토콜

 

구현해야 할 기능을 미리 정의한 것

프로토콜을 채택한 클래스는 프로토콜을 꼭 준수해야함

프로토콜은 보통 Delegate와 Data Source로 뉘는데 optional은 선택적 구현, required는 필수 구현

Delegate는 행동에대한 반응 동작 메서드를 정의하고 내부적으로 필요한 시점에 자동으로 호출??

DataSource는 채택시 반드시 구현해야 할 메서드가 존재

 

프로토콜을 채택한 클래스는 반드시 아래와 같이 위임자를 명시해야함

#.delegate = self

#.dataSource = self 

 

 

델리게이트,Delegate

 

Delegate : 대표자, 대리자

 

#Delegate를 채택한 클래스에 위임자를 지정하여  #기능을 위임자가 정의하도록함

 

아래의 간단한 예시를 봐주세요

textField에 입력한 값을 Label.text에 삽입할 예정입니다

 

 

Delegate없이 구현한다면 아래와 같이 직접 값을 대입할 수 있습니다

 

 

delegate를 사용하려면 우선 텍스트필드의 delegate를 채택하고 위임자를 정해줘야 합니다

아래 코드는 textfield를 self(DelegateViewController)에게 위임한다는 뜻입니다 

textfiled가 호출하는 메서드는 앞으로 뷰컨트롤러가 직접 정의,처리할 수 있게 됩니다

 

UITextFiledDelegate에 정의된 textFiledShouldReturn메서드 입니다 (메서드 문서는 이곳을 클릭)

사용자가 키보드의 엔터(return)를 누를 때 호출되는 메서드 입니다

 

txtfield에 값을 넣고

 

엔터(가상키보드의 return) 버튼을 클릭하면 정상적으로 값이 넣어집니다

 

 

 

 

 

데이터소스,DataSource

 

데이터를 받아 뷰를 그려주는 역할을 합니다

Delegate에서 동작을 제시했다면  DataSource는 보여주는것을 담당합니다

 

uipickerView같은 경우 아래의 메서드가 있으며 이 메서드는 필수로 구현해야합니다

 

 

 

 

 

참고자료

한성현 교수님의 유튜브강의

https://www.youtube.com/channel/UCM8wseo6DkA-D7yGlCrcrwA

Delegate블로그

https://zeddios.tistory.com/8

728x90

'🍎iOS프로그래밍 > 겨울방학 특강' 카테고리의 다른 글

Swift - @frozen을 알아보자  (0) 2022.01.23
Swift - 뷰컨트롤러간 데이터 이동  (2) 2022.01.20
Swift문법 - 고차함수  (0) 2022.01.13
Swift문법 - 배열 Array  (0) 2022.01.09
Swift문법 - Generic  (0) 2022.01.08

댓글