뷰를 전환하며 데이터를 전달하는 방식은 크게 2가지로 나뉩니다.
바로 직접 전달과 간접 전달이죠!
▶️ Property에 접근해서 전달하는 방식
그 중 Segue prepare 메소드를 통해 전달하는 방식은
직접 전달 방식에 해당합니다.
Segue prepare 메소드를 통해 전달하는 방식에 대해 공부를 해볼 겁니다!
Segue가 뭘까요? 세그가 뭘까요??
아래 사진의 화살표를 세그라고 불러요!
스토리보드에서 자주 봤죠? 맞아요 씬과 씬을 연결해주면서 자주 봤을 거에요!
세그는 스토리보드에서 뷰 컨트롤러에서 다른 뷰 컨트롤러로 화면 전환을 해주기 위해 코드를 사용하지 않고 구현해주기 위해 사용하는 도구에요. 세그웨이(Segueway)를 짧게 부른 말이죠.
세그를 통한 데이터 전달을 해주기 위해서
네비게이션 컨트롤러로 embed를 해주었어요!
⚠️ 여기서 중요한 게
segue는 2가지 요소로 이루어져 있다는 거에요!
바로 source(출발점)와 destination(도착점)입니다!
스토리보드에서 보면
-> 화면 전환이 시작되는 ViewController가 source
-> 화면 전환이 완료되는 SecondViewController가 destination 입니다!
1️⃣ 첫 번째로 SecondViewController에서 빈 문자열로 된 text 가변 프로퍼티를 하나 선언해줍니다.
(여기는 property에 접근해서 데이터를 전달해주는 방식과 똑같아요!)
2️⃣ ViewController에서 prepare(for: sender) 메소드를 override 해주고 이 메소드 안에 전달할 데이터를 작성해줍니다.
if 문 안에 segue의 도착점(destination = 화면전환이 완료되는 곳)이 = SecondViewController 가 맞는지에 대한 조건을 주고맞다면 내부 코드를 돌려주라는 말입니다.
nextVC에 segue의 도착점을 SecondViewController로 타입캐스팅 해서 할당해주고즉,, nextVC = SecondViewController 라는 말..!프로퍼티에 접근해서 데이터를 전달하는 방식과 동일한 방식으로
SecondViewController에 선언했던 가변 프로퍼티 text를 불러와 textField.text(우리가 전달할 데이터 값)를 대입해줍니다.
3️⃣ 마지막으로 SecondViewController에서 전달된 데이터가 label에 들어오게 해주려면
viewDidLoad 함수에 textLabel.text = text 를 작성해주세요!
(여기는 property에 접근해서 데이터를 전달해주는 방식과 똑같아요!)
✋🏻 결과 화면 🤚🏻
'⭐️ 개발 > iOS & Swift' 카테고리의 다른 글
[Swift] 싱글턴 패턴 : Singleton Pattern이란? (0) | 2021.05.14 |
---|---|
[iOS] 데이터 직접 전달 방식(3) - Delegation을 통해 전달 (1) | 2021.04.30 |
[iOS] 데이터 직접 전달 방식(1) - Property를 통해 전달 (1) | 2021.04.29 |
[Swift] 클래스(Class) /구조체(Struct) /열거형(Enum) 정리 + 차이점 (2) | 2021.04.29 |
[iOS] UIPanGestureRecognizer 사용해서 모달화면 아래로 dismiss하기 (2) | 2021.04.24 |