본문 바로가기

iOS

[iOS] 네비게이션 인터페이스와 모달

내비게이션 인터페이스와 모달

Index

1.내비게이션 인터페이스란?

2.내비게이션 컨트롤러

3.내비게이션 스택이란?

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

5. 모달이란?


내비게이션 인터페이스란?


내비게이션 인터페이스란 주로 계층적 구조의 화면 전환을 위해 사용되는 드릴 다운 인터페이스다.

드릴 다운 인터페이스란 아래와 같이 각 선택할 수 있는 항목에 대한 세부 항목이 존재하는 인터페이스를 의미한다.

image

내비게이션 인터페이스는 내비게이션 컨트롤러를 통해 구현한다.

내비게이션 컨트롤러


내비게이션 컨트롤러는 컨테이너 뷰 컨트롤러로써 내비게이션 스택을 사용하여 다른 뷰 컨트롤러를 관리한다.

여기서 내비게이션 스택에 담겨서 콘텐츠를 보여주게 되는 뷰 컨트롤러들을 컨텐트 뷰 컨트롤러 (content view controller)라고 한다.

내비게이션 컨트롤런느 두개의 뷰를 화면에 표시한다.

내비게이션 스택뷰에 포함된 최상위 컨텐트 뷰 컨트롤러의 컨텐츠를 나타내는 뷰, 내비게이션 컨트롤러가 직접 관리하는 뷰(내비게이션 바 또는 툴바)가 존재한다.

추가로 내비게이션 인터페이스의 변화에 따른 특정 액션을 동작하도록 하기 위해 내비게이션 델리게이트 객체를 사용할 수 있다.

내비게이션 스택이란?


내비게이션 컨트롤러에 의해 관리되는 내비게이션 스택은 뷰 컨트롤러를 담을 수 있는 배열이라고 생각하면 된다.

내비게이션 스택에 가장 최하위 뷰 컨트롤러를 루트 뷰 컨트롤러라고 부른다.

루트 뷰 컨트롤러는 내비게이션 스택에서 팝(pop) 되지 않는다.

또한 내비게이션 스택에 가장 최상위 뷰 컨트롤러가 화면에 보여지게 된다.

이름에서 알 수 있듯, 내비게이션 스택은 푸시(Push) 또는 팝(Pop)을 통해 뷰 컨트롤러들을 추가/삭제한다.

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


UINavigationController 클래스의 메소드 또는 세그(segue)를 사용하여 네비게이션 스택의 뷰 컨트롤럴르 추가 또는 삭제할 수 있다.

(segue : 스토리보드의 한 화면에서 다른 화면으로의 이동)

내비게이션 스택의 푸시


내비게이션 스택에 새로운 뷰 컨트롤러가 푸시될 떄 UIViewController 인스턴스가 생성되고 내비게이션 스택에 추가된다.

  1. 내비게이션 스택에 루트 뷰 컨트롤러만 들어가 있는 초기상태이다. ( 내비게이션 컨트롤러 생성시 반드시 루트 뷰 컨트롤러가 설정되어 있어야 한다.)
    image

  2. 인터페이스 위 버튼, 뷰 컨트롤러1 이동 터치시 내비게이션 스택에 뷰 컨트롤러1 을 푸시한다.
    뷰 컨트롤러1의 인스턴스가 생성되고 내비게이션 스택에 추가된다. 이로써 뷰 컨트롤러1이 최상위 뷰 컨트롤러로써 화면에 보이게 된다.
    image

  3. 이후 뷰 컨트롤러2 이동 버튼을 통해 내비게이션 스택에 뷰 컨트롤러2도 푸시한다.
    뷰 컨트롤러2의 인스턴스가 생성되고 내비게이션 스택에 추가된다.
    이로써 뷰 컨트롤러2가 최상위 뷰 컨트롤러가 되어 화면에 보여지게 된다.
    여기서 주목할 점은 새로운 뷰 컨트롤러가 추가되어도 기존에 있던 뷰 컨트롤러들(인스턴스)은 삭제되지 않고 유지되고 있다는 점이다.
    image

내비게이션 스택의 팝


내비게이션 스택에 존재하는 뷰 컨트롤러가 팝(pop) 될 떄 생성되었던 UIViewController의 인스턴스는 다른 곳에서 참조되고 있지 않다면 메모리에서 해제되고, 내비게이션 스택에서 삭제된다.
image

  1. 마지막 푸시 상태에서 상단 내비게이션 바에 있는 뷰 컨트롤러1을 눌러 뷰 컨트롤러2를 팝한다.

뷰 컨트롤러2가 내비게이션 스택에서 삭제되고 뷰 컨트롤러1이 다시 최상위 뷰 컨트롤러가 되어 화면에 보여지게 된다.

image

  1. 내비게이션 바에 위치한 루트 뷰 컨트롤러 를 눌러서 뷰 컨트롤러1을 팝한다.

뷰 컨트롤러1이 메모리에서 해제되고 네비게이션 스택에서 삭제된다. 루트 뷰 컨트롤러가 최상위 뷰 컨트롤러가 되고 화면에 보여지게 된다.

앞서 말했듯, 루트 뷰 컨트롤러는 내비게이션 스택에서 팝 되지 않는다.



모달이란?


모달(Modal)이란 사용자의 이목을 끌기 위해 사용하는 화면전환 기법이다.

화면을 전환한다기 보다는 이목을 집중해야 한느 화면을 다른 화면 위에 띄워 표현하는 방식이다.

모달로 보이는 화면을 내리기 위해서는 특정 선택을 해야한다는 특징을 가지고 있다.

alert을 통해 확인 / 취소 둘 중 하나의 버튼을 선택해야 한다거나 액션시트에서 무엇인가를 선택해야한다.

그래서 모달은 내비게이션 인터페이스와는 달리 정보의 흐름을 가지고 화면을 이동한다기 보다는 꼭 이목을 끌어야하는 하면에서 사용한다.

즉, 내비게이션 인터페이스를 통해 화면을 표현하는 것과는 용도가 완전히 다르다!

따라서, 모달로 보이는 화면은 되도록 단순하고 사용자가 빠르게 처리할 수 있는 내용을 표현하는 것이 좋다.

정리


  • 내비게이션 인터페이스란 주로 계층적 구조의 화면 전환을 위해 사용되는 드릴 다운 인터페이스다.

  • 내비게이션 스택뷰에 포함된 최상위 컨텐트 뷰 컨트롤러의 컨텐츠를 나타내는 뷰, 내비게이션 컨트롤러가 직접 관리하는 뷰(내비게이션 바 또는 툴바)가 존재한다.

  • 추가로 내비게이션 인터페이스의 변화에 따른 특정 액션을 동작하도록 하기 위해 내비게이션 델리게이트 객체를 사용할 수 있다.

  • 내비게이션 스택은 내비게이션 컨트롤러에 의해 관리되는 내비게이션 스택은 뷰 컨트롤러를 담을 수 있는 배열이라고 생각하면 된다.

  • 내비게이션 스택 최하위 뷰 컨트롤러를 루트 뷰 컨트롤러라고 하며 최상위 뷰 컨트롤러가 화면에 보여지게 된다.

  • 내비게이션 스택은 푸시(Push) 또는 팝(Pop)을 통해 뷰 컨트롤러들을 관리한다.

  • 모달(Modal)이란 사용자의 이목을 끌기 위해 사용하는 화면전환 기법이다.

  • 모달로 보이는 화면을 내리기 위해서는 특정 선택을 해야한다는 특징을 가지고 있다.

  • 내비게이션 인터페이스를 통해 화면을 표현하는 것과 모달을 통해 화면을 표현하는것은 용도가 완전히 다르다!

'iOS' 카테고리의 다른 글

[iOS] ViewController _ Lifecycle  (0) 2020.05.07
[iOS] Codable  (0) 2020.04.23
[iOS] UISlider 공식문서 번역 및 공부  (0) 2020.04.19
[iOS] UIPickerView 공식문서 번역 및 공부  (0) 2020.04.19
[iOS] struct & class , typealias  (0) 2020.04.19