일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 아이폰
- contentInset
- 스위프트
- @available
- 독서후기
- Mock
- viewcontroller
- 스타트업주니어로살아남기
- xcode
- Info.plist
- SWIFTUI
- View Life Cycle
- 야곰아카데미
- 책후기
- Modality
- roundingMode
- NotificationCenter
- 독후감
- NumberFormatter
- Codegen
- mvvm
- 부트캠프
- UIResponder
- human interface guidelines
- IOS
- Failed to register bundle identifier
- Navigation
- Structures and Classes
- delegation
- SWIFT
- Today
- Total
호댕의 iOS 개발
[iOS] ViewController 간 데이터 전달 방법 1 (프로퍼티에 직접 접근) 본문
최근 프로젝트를 하면서 View Controller 간 데이터를 전달하는 방법에 대해 공부하고 있습니다.
아직 데이터 전달 방법을 하나씩 알아가고 있는 중이라 하나씩 정리를 해보도록 하겠습니다 ☺️
일단 스토리보드에 View Controller 2개를 생성해주고 각각 본인의 ViewController 소스파일에 연결해주었습니다.
첫번째 뷰(초록색)의 텍스트 필드에 데이터를 입력하고, 데이터 전달 버튼을 누르면 두번째 뷰(주황색)의 Label에 전달되는 방식으로 구현해보겠습니다.
// 첫번째 ViewController
import UIKit
class MainViewController: UIViewController {
var text: String = ""
@IBOutlet weak var textField: UITextField!
override func viewDidLoad() {
super.viewDidLoad()
self.textField.text = text
}
@IBAction func touchUpDataTransmissionButton(_ sender: UIButton) {
if let secondVC = self.storyboard?.instantiateViewController(withIdentifier: "secondVC") as? SecondViewController {
secondVC.text = textField.text ?? "없습니다"
self.present(secondVC, animated: true)
}
}
}
먼저 첫번째 View에서 textField를 @IBOutlet을 통해 연결해주고 viewDidLoad에서 텍스트 필드를 비어있는 상태로 로드할 수 있도록 빈 문자열을 넣어줬습니다.
그리고 버튼을 누르면 다음 화면으로 넘어가면서 데이터가 전송될 수 있도록 touchUpDataTransmissionButton(_ sender: UIButton) 함수를 구현했습니다.
여기서 직접 두번째 View에 있는 text라는 변수에 직접 textField의 텍스트 값을 넣어주고 화면이 모달로 보여지도록 present 메서드를 사용했습니다.
두번째 View는 더 간단합니다.
// 두번재 ViewController
import UIKit
class SecondViewController: UIViewController {
var text = ""
@IBOutlet weak var textLabel: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
self.textLabel.text = text
}
}
첫번째 ViewController에서 호출했던 text가 바로 저 빈 문자열인 text 변수입니다.
첫번째 ViewController에서 직접 두번째 ViewController 프로퍼티인 text에 직접 접근하여 값을 넣어주는 방식인거죠!!
다시 정리해보면 다음과 같습니다.
- 데이터를 받고 싶은 ViewController에 데이터를 받을 프로퍼티를 생성해준다. (위 예시에선 text입니다)
- 받은 데이터를 어떻게 할 지 정해준다. (위 예시에선 viewDidLoad에서 textLabel에 프로퍼티 값을 넣어줬습니다)
- 데이터를 보내고 싶은 ViewController에서 직접 데이터를 받을 ViewController의 인스턴스를 생성해서 값을 넣어줍니다.
ViewController 간 데이터를 전달하는 방법은 다양한 만큼 계속 정리를 해보겠습니다
'Software Engineering > iOS' 카테고리의 다른 글
[iOS] JSON 데이터를 만들고 parsing하기 (0) | 2021.12.12 |
---|---|
[iOS] 코드로 화면전환하기 (0) | 2021.12.12 |
[iOS] Notification Center (0) | 2021.11.07 |
[UML] Unified Modeling Language (0) | 2021.11.06 |
[스토리보드] View의 화면전환 방식 (0) | 2021.11.02 |