[TIL] UINavigationController

Eden·2025년 7월 16일

UINavigationController는 iOS 앱에서 화면 간 계층적 이동을 관리하는 컨테이너 뷰 컨트롤러입니다.
주로 화면 전환 시 푸시(Push)팝(Pop) 방식으로 네비게이션 스택을 관리합니다.


1. UINavigationController란?

  • 뷰 컨트롤러들의 스택(Stack)을 관리하는 컨테이너 뷰 컨트롤러
  • 계층 구조 기반 탐색을 구현할 때 사용
  • 주로 마스터-디테일 패턴에서 활용

2. 특징

  • 네비게이션 바(Navigation Bar) 제공 → 제목, 버튼 등을 표시
  • 네비게이션 스택 기반 → push로 추가, pop으로 제거
  • 루트 뷰 컨트롤러는 항상 스택의 첫 번째 요소

3. 기본 구조

UINavigationController
 └── RootViewController
       └── [Push -> SecondViewController]
       └── [Push -> ThirdViewController]

4. 생성 및 사용

코드로 생성

let rootVC = FirstViewController()
let navigationController = UINavigationController(rootViewController: rootVC)
window?.rootViewController = navigationController
window?.makeKeyAndVisible()

화면 전환 (Push)

let detailVC = DetailViewController()
navigationController?.pushViewController(detailVC, animated: true)

화면 되돌아가기 (Pop)

navigationController?.popViewController(animated: true) // 이전 화면으로
navigationController?.popToRootViewController(animated: true) // 루트 화면으로

5. 네비게이션 바 설정

navigationItem.title = "Home"
navigationController?.navigationBar.prefersLargeTitles = true
  • navigationItem → 현재 뷰 컨트롤러의 제목, 버튼 설정
  • navigationBar → 전체 네비게이션 바 스타일 변경 가능

6. UINavigationController의 장점

  • 화면 간 계층적 탐색을 쉽게 구현 가능
  • 네비게이션 바 UI 자동 제공
  • 일관된 사용자 경험 제공

7. 주의사항

  • 푸시/팝은 UINavigationController가 있는 화면에서만 가능
  • 루트 뷰 컨트롤러는 pop으로 제거할 수 없음
  • 네비게이션 스택이 깊어지면 메모리 관리 주의 필요

결론

UINavigationController는 iOS 앱에서 가장 기본적인 화면 전환 컨트롤러입니다.
계층형 네비게이션이 필요한 경우 필수적으로 사용되며, 스택 기반 구조를 이해하는 것이 중요합니다.

profile
iOS Dev

0개의 댓글