키보드로 문자가 입력되는 경우를 통해 delegation이 무엇인지 살펴보자.
IBAction
과 같이 텍스트 필드 자체를 메서드에 연결하는 것이 아니라, View Controller
전체에 연결한다.View Controller
는 텍스트 필드의 위임자 역할을 한다. (Delegate)// UITextFieldDelegate를 UIViewController 클래스에 연결한다.
class ViewController: UIViewController, UITextFieldDelegate {
...
}
View Controller
를 delegate
와 연결해준다.View Controller
에서 다양한 callback 함수를 사용할 수 있다.// 다양한 callback 함수들 중 하나이다.
// 사용자가 엔터를 눌렀을 경우 함수가 실행됨.
func textFieldShouldReturn(_ textField: UITextField) -> Bool {
// 사용자가 엔터를 눌렀을 때 실행되는 로직 작성
...
return true
}
mode
라는 프로퍼티가 있다고 가정해보자.var mode: Mode = .flashCard
didSet
블럭을 추가한다.mode
프로퍼티의 값이 변경될 때 마다, didSet
내부에 있는 updateUI()
메서드가 실행된다.var mode: Mode = .flashCard {
didSet {
updateUI()
}
}