Today I Learned
Segue를 통한 ViewController 간 데이터 통신 - TIL
jjjkh
2023. 8. 22. 20:32
- storyboard에서 viewcontroller 사이를 화살표로 표현한다.
- segue는 화면 전환을 위해 사용되는 인터페이스 요소이다.
- 특징
다음 viewcontroller로 데이터를 전달할 수 있다.
화면전환을 수행하기 전에 원하는 작업을 수행할 수 있다.
화면전환 시 애니메이션을 적용할 수 있다.
segue의 destination, source로 구성됨
// 첫 번째 화면
class FirstViewController: UIViewController {
@IBAction func buttonTapped(_ sender: UIButton) {
performSegue(withIdentifier: "showDetail", sender: nil)
}
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
if segue.identifier == "showDetail" {
if let secondViewController = segue.destination as? SecondViewController {
secondViewController.data = "Hello, Second View Controller!"
}
}
}
}
// 두 번째 화면
class SecondViewController: UIViewController {
var data: String?
@IBOutlet weak var label: UILabel!
override func viewDidLoad() {
super.viewDidLoad()
label.text = data
}
}
이런 식으로 코드를 작성할 수 있고 스토리 보드에서는 첫번째 페이지에 버튼을 추가하고 두번째 페이지에 label을 추가한다. 그리고 버튼을 컨트롤을 누른 상태로 두번째 페이지의 컨트롤러에 가져가면 세그연결 타입이 나오는데 show를 선택해준다. 그러면 화살표로 두 페이지가 연결되게 되게 되는데 identifier의 이름을 showDetial로 바꾸어준다. 그리고 label을 IBOutlet으로 연결해주고 버트는 액션으로 연결해주고 실행을 시키면 된다.