728x90
반응형
Navigation Controller와 Modal에서의 화면 전환 차이
- Navigation interface
내비게이션 인터페이스는 주로 계층적 구조의 화면전환을 위해 사용되는 드릴 다운 인터페이스(drill-down interface)이다
드릴 다운 인터페이스는 각 선택할 수 있는 화면에 대한 세부 항목이 존재하는 인터페이스인데
설정 앱처럼 정보의 흐름을 가지고 있는 경우에 사용을 한다
내비게이션 인터페이스는 내비게이션 컨트롤러를 통해 구현한다.
- Navigation Controller
내비게이션 컨트롤러는 컨테이너 뷰 컨트롤러(container view controller)로써 내비게이션 스택을 사용하여 다른 뷰 컨트롤러를 관리한다
내비게이션 스택(Navigation Stack)은 뷰 컨트롤러를 담을 수 있는 배열과 같다
스택의 가장 하위에는 Root View Controller가 존재하며 이것은 스택에서 pop되지 않는다.
그 위에 View Controller가 push되며 마지막에 푸시된 뷰 컨트롤러가 최상위 뷰 컨트롤러로 화면에 보이게 된다.
내비게이션 스택은 화면에서 push/pop을 통해 뷰 컨트롤러를 관리한다.- 새로운 뷰 컨트롤러가 push될 때
UIViewController
인스턴스가 생성되고 내비게이션 스택에 추가된다 - pop하면 생성되었던
UIViewController
의 인스턴스는 다른 곳에서 참조되고 있지 않는 경우 메모리에서 해제되고, 내비게이션 스택에서 삭제된다.
- 새로운 뷰 컨트롤러가 push될 때
Modal 모달(Modal)은 화면전환 기법 중 하나이다. 위에서 설명한 내비게이션 인터페이스처럼 화면 흐름이 있을 때 나타나는 것 보다는 화면을 다른 화면 위로 띄워 표현하는 방식이다.
기존의 있는 흐름을 끊고 사용자에게 무언가를 입력 받게 하거나 알람 표시에 관한 화면을 표시하고 사용자가 특정 버튼을 눌러야 화면이 사라지게 된다.앱에서 로그인/회원가입 같은 기능에서 Modal을 사용하게 된다.
뷰 컨트롤러를 화면상에 나타내는 방법은 1. 컨테이너뷰 컨트롤러에 임베드하거나, presentation을 통해서 나타낼 수 있다
뷰 컨트롤러의present
지원 기능은UIViewController
클래스에 내장되어 있으며 모든 뷰 컨트롤러 객체에서 사용할 수 있다
func present(UIViewController, animated: Bool, completion: (() -> Void)? = nil)
뷰 컨트롤러를 나타내면 아래 두 뷰 컨트롤러 간의 관계가 생성되고 presented view controller가 사라질 때(dismissed)까지 유지된다.
- 나타내는 뷰 컨트롤러 (presenting view controller)
- 나타나는 뷰 컨트롤러 (presented view controller)
modalPresentationStyle
프로퍼티를 통해 뷰 컨트롤러가 화면에 나타나는 모양을 설정할 수 있다.
정리
Navigation interface와 Modal에서의 화면 전환 차이는 화면 흐름과 관련되는지/되지 않는 지에 큰 차이가 있다.
Navigation controller
- 화면 표시 : push
- 화면 제거 : pop
Modal
- 화면 표시 : present
- 화면 제거 : dismiss
반응형
'Programming > iOS' 카테고리의 다른 글
[iOS/Swift 3.0] UITableview 알아보기 - DataSource & Delegate (0) | 2018.06.01 |
---|---|
[iOS.Swift3.0] UITableView 알아보기 - 기본 (0) | 2018.06.01 |
[iOS/Swift3.0] IBAction: Target-Action 알아보기 (0) | 2018.05.15 |
[iOS/Swift3.0] Swift FCM Closed App Push Notification Click Event (1) | 2018.04.23 |
[iOS/Swift] FCM 메세지 수신, 포그라운드 앱에서 데이터 메시지 처리하기 (0) | 2018.04.12 |