iOS/Swift
뷰 컨트롤러 직접 호출에 의한 화면 전환
kihun5393
2021. 8. 9. 16:44
뷰 컨트롤러에서 직접 호출하는 방식을 프레젠테이션 방식이라고 합니다.
구현하는 방법을 알아보겠습니다.
뷰 컨트롤러 호출 구현
화면 UI 구성
이동할 뷰 컨트롤러에 Storyboard ID 지정
화면 전환을 구현할 버튼 객체 선언 및 뷰컨트롤러 호출 구현
@IBAction func moveNext(_ sender: Any) {
// 이동할 뷰 컨트롤러 객체를 StoryBoardID 정보를 이용하여 참조
let uvc = self.storyboard!.instantiateViewController(withIdentifier: "SecondVC")
// 화면 전환할 때의 애니메이션 타입
uvc.modalTransitionStyle = UIModalTransitionStyle.coverVertical
// 인자값으로 뷰 컨트롤러 인스턴스를 넣고 프레젠트 메소드 호출
self.present(uvc, animated: true)
}
이전 화면으로 돌아가기
뷰 컨트롤러 파일 만들기
SecondViewController.swift 파일 생성 후 UIViewController 상속
두번째 화면에 뷰 컨트롤러 할당
SecondViewController 에 이전 페이지 메소드 구현
import UIKit
class SecondViewController: UIViewController {
@IBAction func back(_ sender: Any) {
// dismiss 로 호출 해제
self.presentingViewController?.dismiss(animated: true)
}
}
호출을 구현할 때에는 주체가 뷰 컨트롤러 자신이지만,
self.present(uvc, animated: true)
호출을 해제(dismiss)할 때에는 호출을 한 대상(이전 ViewController)에게 요청하는 것이다.
self.presentingViewController?.dismiss(animated: true)
이전 화면과 이후 화면은 서로 참조 관계에 있다.
이전 화면(ViewController)은 presentedViewController 속성에 저장되 있는 포인터를 통해 이후 화면(SecondViewController)을 참조하고, 이후 화면(SecondViewController)는 presentingViewController 속성에 저장되 있는 포인터를 통해 이전 화면(ViewController)를 참조하게 된다.