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 연결 방법

profile
🌱 iOS developer

0개의 댓글