'UINavigationController'에 해당되는 글 1건

최초 작성일 : 2010/03/28 08:16 


UINavigationController

부모클래스 : UIViewController, UIResponder, NSObject

관련 샘플들 : CoreDataBook, TableSearch, TableViewSuite, TaggedLocations, WorldCities

개요 : 계층적 구조를 갖는 데이터의 네비게이션 관리에 특화된 뷰 컨트롤러. subclassing은 고려되지 않은 대신

애플리케이션의 유저인터페이스를 통해 개발자가 다루고자 하는 컨텐츠에서 계층적 속성을 나타내고자 할 때

이미 구현되어있는 인스턴스를 그냥 사용하면 된다.

이 클래스는 컨텐츠간의 이동을 효율적이고 쉽게 표현할 수 있도록 해준다.


화면에는 일반적으로 데이터의 계층적 구조를 모방한 네비게이션 인터페이스가 보여진다.

계층적 구조 각각의 단계에서 그 단계의 데이터를 화면에 출력할 수 있도록

적절한 화면(뷰 컨트롤러에서 관리되는)을 제공해야 한다.

아래 그림은 아이폰 시뮬레이터에 설치된 네비게이션 인터펭이스를 구현한

애플리케이션의 예이다.


첫번째 화면은 선택버튼을 포함함 애플리케이션의 리스트가 보여진다.

하나의 애플리케이션을 선택하면 애플리케이션 설정을 위한 개별 설정 항목들과

설정 항목들의 그룹이 나타난다. 여기서 다시 하나의 항목을 선택하면

또다른 하위 설정 목록들이 보여지는 식이다.

최초의 Root 뷰를 제외한 나머지 뷰의 네비게이션 컨트롤러는 계층 구조의

이전 단계로 돌아갈 수 있는 back 버튼이 생기게 된다.





이러한 네비게이션 컨트롤러 객체는 현재 보여지고 있는 화면들을 네비게이션 스택을 이용해 관리한다.

이 스택의 제일 밑에는 Root 컨트롤러가 있게 되고 가장 위에는 현재 화면에 출력되고 있는 뷰 컨트롤러가

위치한다.


애플리케이션 실행시에 스택의 상태를 변경시키기 위해 네비게이션 컨트롤러 객체의 함수를 사용할 수 있다.

가장 일반적인 작동은 새로운 뷰 컨트롤러를  pushViewController:animated:함수를 사용하여

스택에 밀어넣는(push) 것이다.


새로운 뷰 컨트롤러를 스택에 넣게 되면 뷰 컨트롤러는 화면에 보여지게 되고 네비게이션 컨트롤들은

이러한 변화를 반영하여 업데이트 된다. 보통 사용자가 다음 단계의 정보를 보기 위하여 항목을 선택한데 대한

응답으로 뷰 컨트롤들을 스택에 넣게 된다.


생략…


Navigation Controller Views

UINavigationController 클래스는 UIViewController를 상속받고 있기 때문에 view 속성을 통해 그 자체의 뷰에

접근할 수 있다. 네비게이션 인터페이스를 배치할 때 어떠한 형태의 뷰 구조를 생성하든 가장 하부에는 이

뷰를 배치해야 한다. 예를 들어 네비게이션 인터페이스 자체를 배치한다고 할 때 윈도우의 메인 서브 뷰로 만들어야

한다. 네비게이션 인터페이스를 탭 바 인터페이스 내에 배치할 경우에는 적절한 탭 안에 네비게이션 컨트롤러의 뷰를

Root 뷰로 배치해야 한다.


네비게이션 컨틀러의 뷰는 네비게이션 바, 선택적인 툴 바, Custom Content 등 몇몇 다른 뷰를 포함하고 있는 컨테이너이다.

아래 그림은 이 뷰들이 어떻게 전체적인 네비게이션 인터페이스를 구성하고 있는지 보여준다. 네비게이션 바나 툴 바의 내요이

바뀌더라도 뷰들 자체는 변하지 않는다. 단지 Custom Content만 뷰 컨트롤러를 반영하기 위해 바뀌고 네비게이션 스택의

가장 위에 들어간다.





주의 : 커스텀 뷰가 사용할 수 있는 공간의 크기는 (다른 네비게이션 뷰의 크기에 의존해)다양할 수 있기 때문에

반드시 커스텀 뷰들의  autoresizingMask 속성을 지정하여 유연한 높이와 넓이 값을 갖도록 해야 한다.

뷰가 화면에 출력되기 전에 네비게이션 컨트롤러는 자동으로 가능한 공간에 맞춰 위치와 크기를 정하게 된다.


생략…

블로그 이미지

마즈다

이제 반백이 되었지만 아직도 꿈을 좇고 있습니다. 그래서 그 꿈에 다가가기 위한 단편들을 하나 둘 씩 모아가고 있지요. 이 곳에 그 단편들이 모일 겁니다...^^

댓글을 달아 주세요