Skip to content

Latest commit

 

History

History
73 lines (63 loc) · 4.36 KB

3. UINavigation이란?.md

File metadata and controls

73 lines (63 loc) · 4.36 KB

날짜: 2023-05-10 23:41

주제: UINavigationController


메모:

A container view controller that defines a stack-based scheme for navigating hierarchical content.

Navigation Interface란?

  • iOS에서 내비게이션 인터페이스는 주로 계층적 구조의 화면전환을 위해 사용되는 드릴 다운 인터페이스(drill-down interface)이다.
    • 드릴 다운 인터페이스란 각 선택할 수 있는 항목에 대한 세부항목이 존재하는 인터페이스이다.

Navigation Controller

  • 내비게이션 컨트롤러는 navigation stack(내비게이션 스택)을 사용하여 다른 뷰 컨트롤러를 관리한다.
  • navigation controller는 두 개의 뷰를 화면에 표시한다. 하나는 내비게이션 스택부에 포함된 최상위 컨텐츠 뷰 컨트롤러의 콘텐츠를 나타내는 뷰와 내비게이션 컨트롤러가 직접 관리하는 뷰가 있다.
Navigation Stack
  • 내비게이션 컨트롤러에 의해 관리되는 내비게이션 스택은 뷰 컨트롤러를 담을 수 있는 배열과도 같다.
  •  내비게이션 스택에 가장 하위에 있는(가장 먼저 스택에 추가된) 뷰 컨트롤러는 내비게이션 컨트롤러의 루트 뷰 컨트롤러(root view controller)가 된다.
  • 루트 뷰 컨트롤러는 내비게이션 스택에서 팝(pop)되지 않으며, 내비게이션 스택의 가장 상위에 있는(가장 마지막에 푸시(push) 된) 뷰 컨트롤러는 최상위 뷰 컨트롤러로 화면에 보이게 된다. navi
  • 이름에서도 알 수 있듯이 내비게이션 스택은 push/pop을 통하여 뷰 컨트롤러를 관리한다.
UINavigationController class
내비게이션 컨트롤러의 생성
init(rootViewController: UIViewController)
내비게이션 스택의 뷰 컨트롤러에 대한 접근
// 내비게이션 스택에 있는 최상위 뷰 컨트롤러에 접근하기 위한 프로퍼티 
var topViewController: UIViewController? 

// 현재 내비게이션 인터페이스에서 보이는 뷰와 관련된 뷰 컨트롤러에 접근하기 위한 프로퍼티
var visibleViewController: UIViewController? 

// 내비게이션 스택에 특정 뷰 컨트롤러에 접근하기 위한 프로퍼티 (루트 뷰 컨트롤러의 인덱스는 0)
var viewController: [UIViewController]
내비게이션 스택의 푸시와 팝에 관한 메서드
func pushViewContrller(UIViewController, animated: Bool)
func popViewController(UIViewController, animated: Bool)

// 루트 뷰 컨트롤러를 제외한 모든 뷰 컨트롤러 팝
// 삭제된 모든 뷰 컨트롤러의 배열을 반환한다. 
func popToRootViewController(animated: Bool) -> [UIViewController]?

// 특정 뷰 컨트롤러가 내비게이션 스택에 최상위 뷰 컨트롤러가 되기 전까지 상위의 있는 뷰 컨트롤러 팝
func popToViewController(_ viewController: UIViewController, animated: Bool) -> [UIViewController]? 
코드로 내비게이션 인터페이스 구성하기
  • 코드로 내비게이션 컨트롤러를 생성할 경우, 내비게이션 컨트롤러가 생성되기 원하는 적절한 지점에 내비게이션 컨트롤러를 생성할 수 있다.
  • 예를 들어 내비게이션 컨트롤러가 애플리케이션 윈도우의 루트 뷰로서 역할을 한다면, 내비게이션 컨트롤러를 applicationDidFinishLaunching: 메서드에 구현할 수 있다.
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:  [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
	let rootViewController = UIViewController()
	let navigationController = UINavigationController(rootViewController: rootViewController)
	
	self.window = UIWindow(frame: UIScreen.main.bounds)
	self.window?.rootViewController = navigationController
	self.window?.makeKeyAndVisible() 
	
	return true
}

출처(참고문헌)

연결문서

Tag

  • #IOS/UINavigationController