화면전환 present vs push

!! 뒤로가기가 있는 화면은 push x버튼은 present 루트를 바꿀떄는 setRoot

[Swift] ViewController 화면전환 방법

자식뷰에는 네비게이션컨트롤러를 줄수가 없음(push, pop 이 불가능하다는 뜻)

주로 계층적 구조의 화면전환을 위해 사용되는 드릴 다운 인터페이스(drill-down-interface)입니다.

드릴 다운 인터페이스란 아래 그램과 같이 각 선택할 수 있는 항목에 대한 세부항목이 존재하는 인터페이스입니다.

Untitled

NavigationController 컨테이너 뷰 컨트롤러로써 내비게이션 스택을 사용하여 다른 뷰 컨트롤러를 관리합니다. 내비게이션 스택에 담겨서 콘텐츠를 보여주는 뷰를 Content view controller 라고 합니다.

내비게이션 인터페이스의 변화에 따른 특정 액션을 동작하도록 하기 위해 navigation delegate 객체를 사용할 수 있습니다.

두개의 뷰를 화면에 표시하며 하나는 내비게이션 스택뷰에 포함된 최상위 Content view controller의 content를 나타내는 뷰와 내비게이션 컨트롤러가 직접 관리하는 뷰(내비게이션바 또는 툴바) 가 있습니다.

Untitled

Untitled

내비게이션 스택이란?

내비게이션 컨트롤러에 의해 관리되는 내비게이션 스택은 뷰컨트롤러에 담을 수 있는 배열과도 같습니다.

가장 하위에 있는(가장 먼저 추가된) 뷰 컨트롤러는 RootViewController 가 되며, 내비게이션 스택에서 pop 되지 않습니다. 가장 상위에 있는(가장 나중에 추가된) 뷰컨트롤러는 최상위 뷰 컨트롤러로 화면에 보이게 됩니다.

내비게이션 스택은 push / pop 을 통하여 뷰컨트롤러(아이템)을 관리합니다.

내비게이션 스택에서 화면이동

UINavigationController클래스의 메서드 또는 segue를 사용하여 내비게이션 스택의 뷰컨트롤러를 추가/삭제할 수 있습니다. 또한 실행중에는 사용자가 인터페이스의 뒤로가기버튼을 사용하거나 화면왼쪽의 가장자리를 스와이프하여 스택에 있는 최상위 뷰 컨트롤러를 pop(삭제)하고 그 아래에 가려져 있던 뷰 컨트롤러의 콘텐츠를 보여줄 수 있습니다.(*세그(segue)는 스토리보드에서 한 화면에서 다른 화면으로의 전환을 말합니다. 세그도 내부적으로 UINavigationController 클래스의 메서드를 사용합니다.)