귀염둥이의 메모

[iOS] Delegate(델리게이트) 패턴 본문

iOS

[iOS] Delegate(델리게이트) 패턴

겸둥이xz 2021. 3. 10. 00:11
반응형

Delegate의 뜻

  • [명사] 대표(자), 위임, 대리(자)
  • [동사] (권한, 업무 등을)위임하다

Delegation Design Pattern

  • Foundation, UIKit, AppKit 그리고 Cocoa Touch 등 애플의 프레임워크에서 광범위하게 활용하고 있다.
  • 주로 프레임워크 객체가 위임을 요청하며, 커스텀 컨트롤러 객체가 위임을 받아 특정 이벤트에 대한 기능을 구현한다.
  • 커스텀 컨트롤러에서 세부 동작을 구현함으로써 동일한 동작에 대해 다양한 대응을 할 수 있게 해준다.

Delegate는 어떤 객체가 해야할 일을 부분적으로 확장해서 대신 처리를 해준다.

 

예제 (TextField)

1) Delegate 사용 X

Click 버튼을 누르면 라벨의 텍스트를 내가 현재 쓴 TextField안의 값으로 나타내도록 하였다.

 

Click 버튼을 탭 하면
Label이 TextField값으로 바뀐다.

 

2) Delegate 사용 

UITextFieldDelegate 프로토콜을 확장해준다.

 

 

viewDidLoad()에 위임자(대리자)가 누구인지 알려준다.

 

textField.delegate = self

  • "textField (UITextField 객체)가 해야할 부분을 내가(self) 처리한다."
  • self는 현재 class인 ViewController
  • 대신 처리해야할 위임자가 뷰컨트롤러이다.
  • 뷰컨트롤러에서 UITextFieldDelegate 프로토콜의 메소드를 구현해서 처리를 한다.

 

UITextFieldDelegate 프로토콜에 있는 메소드인 textFieldShouldReturn을 뷰컨트롤러에 불러와서 구현할 것 이다.

(textFieldShouldReturn는 키보드 return키가 눌리면 호출되는 메소드이다.)

 

 

뷰컨트롤러가 해당 메소드를 대신 처리해준다.

키보드 return키가 눌리면 Label이 TextField값으로 바뀌게 해준다.

 

return을 누르면

 

Label이 TextField값으로 바뀐다.

 

 

 

<참고자료>

magi82.github.io/ios-delegate/

zeddios.tistory.com/8

반응형
Comments