본 게시글은 애플의 공식문서인 View Controller Catalog for iOS 를
파파고로 번역한 문서를 보면서 제가 이해한 내용과 문서의 내용을 합쳐 작성한 글임을 알려드립니다.
. . . 작성 중 ! . . .
네비게이션 컨트롤러를 공부해보자. 영어라 미치겠다.
네비게이션 컨트롤러는 계층적 컨텐츠에 대한 드릴다운 인터페이스를 제공하기 위해 뷰 컨트롤러 스택을 관리한다.
이게 네비게이션 인터페이스 인데, 아까 말했던 것처럼 컨텐츠 뷰 컨트롤러의 표시를 관리하는 것 같다. 공식 문서에서는 자신의 일부 사용자 정의 뷰를 표시하는 역할도 담당한다고 한다. 특히 뒤로 버튼(back 버튼인듯) 사용자가 지정할 수 있는 (커스터마이즈) 일부 버튼이 포함된 탐색 모음을 제공한다. 라고 한다. ;ㅁ; 그러니까 위에 버튼 보면 Edit도 있고 + 버튼도 있고 막 그런걸 지칭하는 듯 하다.
그림 1-1은 네비게이션 인터페이스를 보여준다. 이 그림의 네비게이션 뷰는 네비게이션 컨트롤러 프로퍼티 에 저장된 뷰 이다. 다른 뷰의 인터페이스는 네비게이션 컨트롤러에 의해 관리되는 불투명한 계층이다.
네비게이션 바와 툴 바는 커스터마이즈 가능하지만, 절대로 계층을 수정해서는 안된다.
(라고 하는 것 같다) 아마도 위에 정해진 층대로 설계를 해야 하나보다. - 아닐수도 있다, 혹시 이게 다르다면 댓글 부탁드립니다 -
위 뷰들을 커스터마이즈 할 수 있는 유일한 방법은, UINavigationController 메소드와 UIViewController 클래스들이다.
네비게이션 바를 어떻게 커스터마이즈 하는지에 대한 정보를 보고 싶다면, Customizing the Navigation Bar Appearance. 를 봐라.
탐색 인터페이스에서 사용자 지정 도구 모음 항목을 표시하고 구성하는 방법에 대한 자세한 내용은 Displaying a Navigation Toolbar 를 참조하십시오.
The Objects of a Navigation Interface - 네비게이션 인터페이스의 개체
네비게이션 컨트롤러는 네비게이션 인터페이스를 구현하기 위해 몇 가지의 오브젝트들을 사용한다. 사용자는 이러한 오브젝트 중 일부를 제공할 책임이 있으며, 나머지는 네비게이션 컨트롤러 자체에서 생성합니다. (이 문단은 아마도 우리가 사용할 수 있는 오브젝트가 몇개 존재하고 나머지는 기본으로 띄워준다라는 의미인듯 싶다) 특히, 표시하려는 콘텐츠를 뷰 컨트롤러에 제공해야 합니다. 네비케이션 컨트롤러의 알림에 응답하려면 델레게이트 오브젝트도 제공할 수 있다. 네비게이션 컨트롤러는 네비게이션 인터페이스에서 사용되는 네비게이션 바와 툴바와 같은 뷰를 만들고 관리하는 역할을 합니다. 그림 1-2는 네비게이션 컨트롤러와 이러한 주요 오브젝트 사이의 관계를 보여줍니다.
네비게이션 바와 툴바 오브젝트에 연결된 네비게이션 컨트롤러의 경우, 모양과 동작의 일부만 사용자가 지정할 수 있습니다. 네비게이션 컨트롤러만 구성 및 표시를 담당한다. 또한 네비게이션 컨트롤러는 자동으로 자신을 UINavigationBar 오브젝트의 대리자로 할당하고, 다른 오브젝트가 해당 관계를 변경하지 못하도록 합니다. 네비게이션 스택에서 대리자(delegate) 와 다른 뷰 컨트롤러를 수정할 수 있다. 네비게이션 스택은 네비게이션 컨트롤러에 의해 관리(managed) 되는 커스텀 뷰 컨트롤러의 Last-in, first-out 컬렉션이다. (무슨말인지 모르겠다) 스택에 추가된 첫 번째 아이템은 루트 뷰 컨트롤러 이고, 스택에서 popped 될 수가 없습니다. (그러니까 계속 들어가 있는 것 같다)
UINavigationController 클래스의 메서드를 사용하여 스택에 아이템을 추가할 수 있습니다.
그림 1-3은 내비게이션 컨트롤러와 내비케이션 스택의 오브젝트 사이의 관련 관계를 보여줍니다. (상단 뷰 컨트롤러와 가시 뷰 컨트롤러가 반드시 동일하지는 않습니다. 예를 들어 뷰 컨트롤러를 모달로 표시하면 표시되는 뷰 컨트롤러 속성의 값이 표시된 모달 뷰 컨트롤러를 반영하도록 변경되지만 상위 뷰 컨트롤러 속성은 변경되지 않습니다.)
내비게이션 컨트롤러의 주된 책임은 새로운 컨텐츠 뷰 컨트롤러를 스택으로 밀어 넣거나 컨텐츠 뷰 컨트롤러를 스택에서 분리하여 사용자 작업에 대응 하는 것입니다. 내비게이션 스택에서 push 하는 각 뷰 컨트롤러는 앱 데이터의 일부를 표시하는 역할을 한다.
. . . 작성중 . . .
'Programming > iOS' 카테고리의 다른 글
코코아 터치 계층(Cocoa Touch Layer) + UIKit (0) | 2021.07.01 |
---|---|
AVFoundation, Timer (0) | 2021.07.01 |
UIButton, UISlider, UILabel (0) | 2021.07.01 |
컨트롤 이벤트와 액션과의 관계 (0) | 2021.07.01 |
TIL 2021.07.01 (0) | 2021.07.01 |
댓글