UIKit - 화면 전환 및 데이터 전달(간접 세그웨이)
UIKit - 화면 전환 및 데이터 전달(간접 세그웨이)
화면 전환 및 데이터 전달(간접 세그웨이)
스토리보드에서 전환할 ViewController를 세그웨이로 연결해줘야함.
Segue(세그웨이)는 화면 전환을 처리하는 객체임.
1.ViewController를 클린한 뒤 키보드에 Control 키를 누른 상태에서 전환할 ViewController로 드래그 후 PresentModally를 선택.
2.Segue 확인
3.Segue의 Identifier 값을 설정
위 값은 Segue를 통해 화면 전환을 처리할 때 필요함.
화면 코드 구현
ViewController.swift
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
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func nextBtnTapped(_ sender: UIButton) {
// 세그웨이 활성화 메서드
performSegue(withIdentifier: "nextSegue", sender: self)
}
// 데이터 전달 처리를 위해 prepare 메서드를 오버라이딩 해줌.
// performSegue가 호출된 직후, 실제 화면 전환 전에 prepare 메서드가 자동 호출되어 데이터를 주입할 수 있음.
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// 세그웨이 ID 값 확인
if segue.identifier == "nextSegue"{
// destination: 전환되는 화면
let nextVC = segue.destination as! NextViewController
// 데이터 전달
nextVC.text = "Hello World!"
}
}
}
NextViewController.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import UIKit
class NextViewController: UIViewController {
@IBOutlet weak var exLabel: UILabel!
// 데이터를 전달받기 위한 변수
var text: String?
override func viewDidLoad() {
super.viewDidLoad()
exLabel.text = text
}
@IBAction func backBtnTapped(_ sender: UIButton) {
// 이전 화면으로 돌아가기
dismiss(animated: true)
}
}
결과
위 예시처럼 버튼같은 UI에 직접 세그웨이를 연결하는 것이 아니라 코드(performSegue)로 세그웨이를 실행하는 방식을 간접 세그웨이라고 함.
This post is licensed under CC BY 4.0 by the author.



