이전에 서로 다른 ViewController의 스위칭에 대해 정리했었다.
이번에는 ViewController 간 데이터 전달 방법을 정리해보고자 한다.
여러가지 방법이 있지만, 가장 대표적으로 직접 전달 방식과 간접 전달 방식이 있다. 이번에는 "View가 present 되었을 때 다운캐스팅을 통해 프로퍼티로 직접 전달하는 방식"과 "Delegate를 채택하여 간접 전달하는 방식"을 준비했다.
(이외에도 서로 다른 ViewController 간 데이터 전달에는 Segue, Closure, UserDefault 등 여러가지 방식이 있긴하다.)
위처럼 present 메서드 사용시 프로퍼티에 접근해서 전달하는 방식은 대부분 화면전환이 이루어지는 과정(인스턴스 생성)에서 일어나는 데이터 전달이다.
delegate(위임하다)는 본인이 해야할 일을 다른 곳에 위임한다는 뜻이다.
즉, UIViewController는 UIAlertViewDelegate(프로토콜)를 채택하고, UIAlertViewController가 해야할 일을 일부 위임받아 하는 것이다.
UIAlertView에서 선언한 delegate가 self. 즉 대신해서 처리할 부분이 presentViewController라는 것을 선언하게 되어주면, 아래의 alertView 메서드에서 받은 String 데이터 값을 현재 ViewController 프로퍼티에 전달할 수 있다.