Segue
스토리보드에서 뷰 컨트롤러 사이의 화면전환을 위해 사용하는 객체이다.
별도의 코드 없이도 스토리보드에서 세그를 연결하면
뷰 컨트롤러 사이의 화면전환을 구현할 수 있다.
UIStoryboardSegue
UIKit 에서 사용할 수 있는
표준 화면전환을 위한 프로퍼티와 메서드를 포함하고 있는 클래스이다.
커스텀 전환을 정의하기 위해 서브클래스를 구현해서 사용할 수도 있다.
필요에 따라 UIViewController 의
performSegue(withIdentifier:sender:)
메서드를 사용하여
세그 객체를 코드로 실행할 수 있다.
세그 객체는 뷰 컨트롤러의 뷰 전환과 관련된 정보를 가지고 있다.
세그는 뷰 컨트롤러의 뷰를 다른 뷰 컨트롤러의 뷰로 전환할 때
뷰 컨트롤러의 prepare(for:sender:)
메서드를 사용하여
새로 보여지는 뷰 컨트롤러에 데이터를 전달할 수 있다.
Main properties
var source: UIViewController
: 세그에 전환을 요청하는 뷰 컨트롤러var destination: UIViewController
: 전환될 뷰 컨트롤러var identifier: String?
: 세그 객체의 식별자prepare(for:sender:)
새로운 ViewController 클래스를 만들 때 Cocoa Touch Class 로 생성하게 되면
아래와 같은 주석을 본 적이 있을 것이다.
// MARK: - Navigation
// In a storyboard-based application,
// you will often want to do a little preparation before navigation
override func prepare(for segue: UIStoryboardSegue, sender: Any?) {
// Get the new view controller using segue.destination.
// Pass the selected object to the new view controller.
}
첫번째 주석의 내용을 살펴보면
스토리보드를 사용한 애플리케이션에서
내비게이션이 되기 전에 준비해야할 것이 있을 것이다. 그 때 이 부분을 사용하라
prepare
메서드 내부에 있는 주석을 살펴보면
segue.destinationViewController 를 사용해서 다음 뷰 컨트롤러를 가져올 수 있고,
원하는 내용들을 보내줄 수 있다.
결과적으로 정리하자면
prepare
메서드는 뷰 컨트롤러 전환 전에 데이터를 처리할 수 있는 메서드이다.
performSegue(withIdentifier:sender:)
화면 전환이 필요한 때에 performSegue
메소드를 사용하
세그 객체를 생성할 수 있다.
Initiates the segue with the specified identifier from the current view controller's storyboard file.
func performSegue(
withIdentifier identifier: String,
sender: Any?
)
만약 버튼을 눌렀을 때 화면전환이 되는 상황을 가정하면 다음과 같이 작성할 수 있다.
class ViewController: UIViewController: {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
}
@IBAction func buttonPressed(_ sender: Any) {
performSegue(withIdentifier: "goToSecond", sender: sender)
}
}
📚 Reference
prepare(for:sender:)
boostcourse - iOS 앱 프로그래밍
[iOS] prepare 메소드란?
[iOS] Segue 연결 방법