iOS 앱 프로그래밍

Using Delegates to Customize Object Behavior

[스위프트] 초보를 위한 delegate 개념 정리(간단한 예제 포함)

델리게이션 디자인 패턴 (Delegation Design Pattern)

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)

https://s3-us-west-2.amazonaws.com/secure.notion-static.com/adfb554c-4482-416e-a9fa-6779228d7357/73_0.png

데이터소스 (DataSource)

Delegate와 DataSource의 차이?

iOS ) DataSource와 Delegate의 차이?