iOS/iOS Swift 개발 일기

iOS swift 델리게이트 패턴

Developer-Michelle 2022. 5. 26. 12:11

델리게이트 패턴 

:객체지향 프로그래밍에서 하나의 객체가 모든 일을 처리하는 것이 아니라, 할 일 중 일부를 다른 객체에 넘기는 것.

일반적으로 GUI기반 프로그래밍에서 일반적으로 사용되는 패턴. ex)이벤트 리스너.

 

 

7.1 텍스트필드

기본적인 기능은 델리게이트 패턴 없이도 사용할 수 있지만, 입력값을 제어하는 등의 고급 기능을 구현하고 싶을 때에는 델리게이트 패턴을 적용해야함.

ex) 특정 문자열의 입력 배제, 입력 가능한 문자열의 길이 제한 등.

 

텍스트 필드에 델리게이트 패턴을 적용하려면 다음 2가지 작업 필요.

1) 텍스트 필드에 대한 델리게이트 프로토콜을 구현. 

프로토콜의 이름: 항상 해당 객체의 클래스명 + delegate로 이루어짐.

ex) UITextFieldDelegate

2) 텍스트 필드의 델리게이트 속성을 뷰 컨트롤러에 연결.

 

최초응답자(first responder)

텍스트 필드를 최초 응답자 객체로 만들고, 다시 해제하는 구문 :

 

let tf = UITextField()

 

//최초 응답자 객체로 지정한다. 키보드가 나타나고 입력 상태가 된다.

tf.becomeFirstResponder()

 

... (필요코드 삽입)

 

//입력이 완료되면 최초응답자 객체를 해제한다. 키보드가 사라진다.

tf.resignFirstResponder()

 

 이 방법 말고 아울렛 변수를 사용하는 방법도 있음.

 

7.2 이미지 피커 컨트롤러

카메라나 앨범 등을 통해 이미지를 선택할 때 사용하는 컨트롤러.

 

7.2.1 UIImagePickerController 클래스

이미지 피커 기능은 UIImagePickerController 클래스에 구현되어 있다.

이 클래스는 UIViewController를 상속받은 컨트롤러이기 때문에, 실행할 때에는 화면 전환하는 방식을 이용하게 된다.

단, 이미지 피커 컨트롤러는 인터페이스 빌더의 오브젝트 라이브러리에 포함되어있지 않으므로, 스토리보드로 구성 불가. 소스코드를 사용하여 직접 인스턴스 생성하고 화면 호출해야 함.

 

p457

allowsEditing 속성: 사진이나 이미지를 선택한 후, 수정이나 보정, 또는 필요한 부분만 잘라내기 등의 편집 작업을 할 것인지에 대한 것.

 

7.2.2 이미지 피커 컨트롤러의 델리게이트 메소드 - 2가지

1) imagePickerController(_:didFinishPickingMediaWithInfo:)

이미지 피커 컨트롤러에서 이미지를 선택하거나 카메라 촬영을 완료했을 때 호출되는 메소드.

만약 선택한 이미지에 대한 수정 옵션이 설정되어 있다면, 이미지 수정 작업이 완료되었을 때 호출된다.

 

이 메소드는 2개의 인자값을 전달함.

첫번째 인자값: 이 메소드를 호출하는 이미지 피커 컨트롤러 객체. 

두번째 인자값: 우리가 원하는 이미지에 대한 데이터.

 

2) imagePickerControllerDidCancel(_:)

이미지 피커 컨트롤러가 실행된 후 이미지 선택 없이 그냥 취소했을 때 호출되는 메소드.

 

7.2.3 실습 - 프로젝트 파일명 : Delegate -ImagePicker

 

7.2.4  익스텐션을 이용한 델리게이트 패턴 코딩

델리게이트 패턴에 사용되는 프로토콜을 익스텐션에서 구현하면, 하나의 뷰 컨트롤러 클래스에 여러 프로토콜 메소드가 난립하는 것을 방지할 수 있다.

 

 

 

 

출처: 꼼꼼한 재은씨의 swift 기본편 p418~