Code 로 Present / Push 되는 화면 전환 방법에서의 데이터 전달
# 실습 : ⓐ ViewController 에서 ⓑ ViewController 로의 데이터 전달
1) ⓐ ViewController 의 메서드에 instantiateViewController 를 호출하여 데이터를 전달할 ⓑ ViewController 로 Down Casting 하여 ⓑ ViewController 의 프로퍼티에 접근한다.
2) ⓑ ViewController 의 viewDidLoad() 메서드에 값을 넣은 프로퍼티를 호출한다.
Delegate 패턴을 활용하여 이전 화면에 데이터 전달하기
Delegate : 위임자
Delegate 패턴 : 위임자를 갖고 있는 객체가 다른 객체에게 자신의 일을 위임하는 형태의 디자인 패턴
이게 무슨 말?
먼저 이 Delegate 패턴을 실제로 작동하게 하는 기술이 바로 protocol 이다. 다음 실습을 통해 구현 방식을 자세히 알아보자.
# 실습 : ⓒ ViewController 에서 이전 화면인 ⓓ ViewController 로 데이터를 전달
ⓒ ViewController
1) ⓒ ViewController 에서 데이터를 전달하는 메서드를 포함하는 protocol 을 선언한다.
→ 이때 protocol 내부에 메서드를 선언만 하고 구현하지 않는다.
→ 프로토콜이 class 나 AnyObject 로 선언하지 않으면, 모든 곳에서 채택이 가능하게 된다.
2) 타입이 protocol인 delegate 변수를 선언한다.
delegate 변수 선언 시 메모리 누수 방지를 위해 weak 로 선언한다. (ARC 라는 메모리 관리 방식으로 인한 메모리 누수 방지)
3) 변수를 쓰고 값을 전달한다.
ⓓ ViewController
4) ⓓ ViewController 에서 선언한 프로토콜을 채택한 후, self 로 초기화하여 delegate 를 위임받게 한다.
프로토콜을 채택할 경우 앞에 상속 받을 것들을 전부 받은 후 채택한다.
5) 대리자 위임 (매우 중요!!)
앞서 ⓒ ViewController 를 viewController 변수를 선언하여 인스턴스화 하여 선언하였다.
viewController.delegate = self
즉, " ⓒ ViewController 의 대리자는 ⓓ ViewController 나야!! " 라는 뜻이다.
5) 프로토콜을 채택하였으므로, 그 프로토콜에 선언한 메서드를 필수적으로 구현해야 한다.
이때, 프로토콜에 선언한 그대로를 구현한다.
Segueway 로 구현된 화면 전환 방법에서의 데이터 전달
Segueway 로 구현된 화면 전환 방법에서
전환되는 화면에 값을 전달하기 위한 제일 좋은 위치는
전처리 prepare 메서드이다.
prepare 메서드는 override 하면 Segueway를 실행하기 직전에 시스템에 의해 자동으로 호출된다.
# 실습 : RootViewController 에서 SeguePushViewController 로 데이터 전달하기
' iOS > UIKit' 카테고리의 다른 글
UIKit 계산기 Storyboard UI (0) | 2022.07.15 |
---|---|
UIStackView (0) | 2022.07.11 |
ViewController Life Cycle (0) | 2022.07.03 |
ViewController & AutoLayout (0) | 2022.06.30 |
Cocoa touch Framework & UIKit (MVC 패턴) (0) | 2022.06.29 |