UItextFieldDelegate 프로토콜을 채택해주면 됨.
그런데 연결만한다고 끝나는게 아니라 델리게이트 메소드가 구현되어 있는 객체까지 의미. 특정이벤트가 발생하였을 때 텍스트 필드는 이를 알려주기 위해 델리게이트 메소드가 구현되어 있는 객체를 찾는다.
override func viewDidLoad(){
//delegate setting
self.tr.delegate= self
뷰 컨트롤러가 텍스트 필드의 델리게이트 객체로 지정되었다.
그 후 텍스트 필드가 변화할때마다 델리게이트 객체에서 찾아 호출. 델리게이트 객체에 지정된 메소드가 구현되어 있는지 확인. 그리고 메소드들이 실행시점에 맞춰 호출된다.
func imagePickerControllerDidCancel(_ picker: UIImagePickerController){}
// 이미지 파커에서 이미지를 선택하지 않고 취소했을때 호출되는 메소드
func imagePickerController(_ picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String:Any]){}
// 이미지 파커에서 이미지를 선택했을 때 호출되는 메소드.
델리게이트 패턴은 최소 하나이상의 프로토콜을 구현해야하는데 한 클래스에서 다양한 객체의 델리게이트 패턴을 구현하다 보면 코드가 난잡해진다. >> 익스텐션을 통해 각각의 프로토콜 구현.