[iOS] 서로 다른 ViewController 간 데이터 전달

Seonhu Kim·2023년 3월 31일
0

iOS

목록 보기
6/16
post-thumbnail

이전에 서로 다른 ViewController의 스위칭에 대해 정리했었다.
이번에는 ViewController 간 데이터 전달 방법을 정리해보고자 한다.

여러가지 방법이 있지만, 가장 대표적으로 직접 전달 방식과 간접 전달 방식이 있다. 이번에는 "View가 present 되었을 때 다운캐스팅을 통해 프로퍼티로 직접 전달하는 방식"과 "Delegate를 채택하여 간접 전달하는 방식"을 준비했다.

(이외에도 서로 다른 ViewController 간 데이터 전달에는 Segue, Closure, UserDefault 등 여러가지 방식이 있긴하다.)

[ Present 메서드를 통한 데이터 전달 ]

프로퍼티 설정 (전환 전, ViewController)

다운캐스팅 후, Present 메서드를 통해 데이터 전달 (전환 후, ViewController)

  • 프로퍼티 네임을 동일하게 작성해서 헷갈릴 수 있으나, 다운캐스팅 & 옵셔널 바인딩 된 vc의 프로퍼티와 self가 찍힌 프로티는 서로 다른 것들이다.

위처럼 present 메서드 사용시 프로퍼티에 접근해서 전달하는 방식은 대부분 화면전환이 이루어지는 과정(인스턴스 생성)에서 일어나는 데이터 전달이다.

[ Delegate를 채택하여 데이터 전달 ]

delegate(위임하다)는 본인이 해야할 일을 다른 곳에 위임한다는 뜻이다.
즉, UIViewController는 UIAlertViewDelegate(프로토콜)를 채택하고, UIAlertViewController가 해야할 일을 일부 위임받아 하는 것이다.

UIAlertView에서 선언한 delegate가 self. 즉 대신해서 처리할 부분이 presentViewController라는 것을 선언하게 되어주면, 아래의 alertView 메서드에서 받은 String 데이터 값을 현재 ViewController 프로퍼티에 전달할 수 있다.

profile
iOS Developer.

0개의 댓글