뷰를 전환하며 데이터를 전달하는 방식은 크게 2가지로 나뉩니다.
바로 직접 전달과 간접 전달이죠!
▶️ Segue prepare 메소드를 통해 전달하는 방식
그 중 Property에 접근하여 전달하는 방식은 직접 전달 방식에 해당합니다.
프로퍼티에 접근해서 전달하는 방식에 대해 공부를 해볼 겁니다!
우선, 프로퍼티란 무엇일까요?
스위프트에서 프로퍼티는 클래스, 구조체, 열거형과 연관되어 있는 정보/값을 의미합니다.
쉽게 예시를 들어보자면,
이렇게 Shinee라는 클래스 내에 [ fandom ] 이라는 문자열 변수와 [ member ] 라는 정수형 변수가 있는데요.
이 fandom과 member 변수를 우리는 Shinee 클래스의 프로퍼티라고 합니다.
어느정도 이해가 가시져?
어쨌든!
이 프로퍼티를 통해 뷰 사이의 데이터를 전달하는 방법을 알아보려고 합니다!
그렇기 위해서는 화면전환이 필요합니다!
저는 모달 화면 전환을 만들어주기 위해 스토리보드를 아래 보는 것처럼 생성해주고
textField와 button, label들의 @IBAction과 @IBOutlet도 연결해줬습니다.
1️⃣ 첫 번째로 SecondViewController에서 빈 문자열로 된 text 가변 프로퍼티를 하나 선언해줍니다.
2️⃣ 그러면 ViewController에서 SecondViewController의 text 변수를 불러올 수 있습니다.
nextVC라고 guard let을 통해 nil이 아닌지 맞는지 확인을 해주고 타입 캐스팅을 통해 SecondViewController로 할당해주었습니다.
그렇기 때문에 nextVC는 결국 SecondViewController라고 할 수 있기 때문에
text 프로퍼티에 접근하여 ViewController의 textField.text의 데이터를 대입해 주었습니다.
3️⃣ present 메소드를 통해 모달 화면 전환을 해주어야 데이터 전달이 실행이 됩니다!
textField.text!에서 옵셔널 강제 언래핑을 해주는 이유는
여기서 우리가 무조건 텍스트 필드에 텍스트를 작성해 줄 것이기 때문입니다.
( 만약, 다른 경우에는 안전한 방법인 옵셔널 바인딩을 해주세요 ~ )
4️⃣ 마지막으로 SecondViewController에서 전달된 데이터가 label에 들어오게 해주려면
viewDidLoad 함수에 textLabel.text = text 를 작성해주세요!
✋🏻 결과 화면 🤚🏻
'⭐️ 개발 > iOS & Swift' 카테고리의 다른 글
[iOS] 데이터 직접 전달 방식(3) - Delegation을 통해 전달 (1) | 2021.04.30 |
---|---|
[iOS] 데이터 직접 전달 방식(2) - Segue prepare 메소드를 통해 전달 (1) | 2021.04.29 |
[Swift] 클래스(Class) /구조체(Struct) /열거형(Enum) 정리 + 차이점 (2) | 2021.04.29 |
[iOS] UIPanGestureRecognizer 사용해서 모달화면 아래로 dismiss하기 (2) | 2021.04.24 |
[iOS] velocity.y < 0 이면 왜 방향이 up일까? (0) | 2021.04.18 |