Using Delegates to Customize Object Behavior
[스위프트] 초보를 위한 delegate 개념 정리(간단한 예제 포함)
ex) UITextFieldDelegate 프로토콜 채택 → 위임자는 self로 지정
class ViewController: UIViewController, UITextFieldDelegate {
@IBOutlet var lbText: UILabel!
@IBOutlet var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
textField.delegate = self // 텍스트 필드의 일은 self가 담당
}
// @IBAction func clickBtn(_ sender: Any) {
// textField.text = lbText.text
// }
}
ex) UITextFieldDelegate: UITextField 객체의 문구를 편집, 관리하기 위해 아래와 같은 메서드 정의
// 대리자에게 특정 텍스트 필드의 문구를 편집해도 되는지 묻는 메서드
func textFieldShouldBeginEditing(UITextField)
// 대리자에게 특정 텍스트 필드의 문구가 편집되고 있음을 알리는 메서드
func textFieldDidBeginEditing(UITextField)
// 특정 텍스트 필드의 문구를 삭제하려고 할 때 대리자를 호출하는 메서드
func textFieldShouldClear(UITextField)
// 특정 텍스트 필드의 `Return` 키가 눌렸을 때 대리자를 호출하는 메서드
func textFieldShouldReturn(UITextField)