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안의 값으로 나타내도록 하였다.
2) Delegate 사용
UITextFieldDelegate 프로토콜을 확장해준다.
viewDidLoad()에 위임자(대리자)가 누구인지 알려준다.
textField.delegate = self
- "textField (UITextField 객체)가 해야할 부분을 내가(self) 처리한다."
- self는 현재 class인 ViewController
- 대신 처리해야할 위임자가 뷰컨트롤러이다.
- 뷰컨트롤러에서 UITextFieldDelegate 프로토콜의 메소드를 구현해서 처리를 한다.
UITextFieldDelegate 프로토콜에 있는 메소드인 textFieldShouldReturn을 뷰컨트롤러에 불러와서 구현할 것 이다.
(textFieldShouldReturn는 키보드 return키가 눌리면 호출되는 메소드이다.)
뷰컨트롤러가 해당 메소드를 대신 처리해준다.
키보드 return키가 눌리면 Label이 TextField값으로 바뀌게 해준다.
<참고자료>
반응형