웰코발
웰코's iOS
웰코발
전체 방문자
오늘
어제
  • 분류 전체보기 (63)
    • Swift (26)
    • rxSwift (13)
    • SwiftUI (3)
    • iOS (12)
    • 기타 (1)
    • 개발관련 용어정리 (6)
    • 면접준비 (0)
    • 공공데이터 (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • WKWebView
  • Observable
  • alamofire
  • ReactorKit
  • Coordinator
  • content_available
  • UI
  • cell
  • rxswift
  • collectionview
  • SWIFT
  • 주제구독
  • Scroll
  • swiftUI
  • 디자인
  • ios
  • 측정소정보
  • 대기오염통계 현황
  • delay
  • uitableview

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
웰코발
Swift

[Swift] NavigationController와 TabBarContoller 무엇으로 감쌀지?

Swift

[Swift] NavigationController와 TabBarContoller 무엇으로 감쌀지?

2023. 11. 2. 20:25

화면을 설계 할 때 가끔 헷갈리는 부분이 있다.

 

NavigationController가 TabBarController를 감쌀지...

 

TabBarController가 NavgationController를 감쌀지...

 

그거시 문제로다..

 

단순해보이지만 처음에 설계를 잘못하면 뿌리를 걷어내고 코드를 정말 어렵게 다시 짜야하는

초유의 사태가 발생할 수도 있어 기록해놓는다...

 

 

단순하게 생각해보면 

 

- TabBarController가 NavgationController를 감쌀 경우

 

하단의 TabBar를 유지한 상태로 Navigation 이동 (Push, Pop)을 하고 싶으면 

 

TabBarController 의 탭(NavigationController) 하나가 Navigation 스택 하나를 가지고 있으면 된다.

 

그러면 각 탭별로 각 Navigation 스택이 쌓이게 된다. 

 

어느 탭에서 Navigation 이동(Push, Pop) 했다가 다른 탭을 보고나서 다시 되돌아 와도

해당 탭의 Navigation 스택은 유지된다.

 

하나의 탭에서 여러개의 Navigation  root를 가지게 되는 셈이 되는것이다..

 

 

반대로

 

- NavigationController가 TabBarController를 감쌀 경우

 

TabBar 자체가 Root가 되어 뿌리를 뻗고 싶은 경우

즉, TabBar에서 Navigation 이동(Push, Pop)을 할 경우 

 

TabBar를 나타내는 TabBarController 자체도 Navigation의 하나의 스택으로 만들고 싶다면

 

NavigationController가 TabBarController를 감싸면 된다.

 

예를 들면, TabBarController 내 각 탭의 ViewController에서 Push를 할 경우

 

각 탭의 ViewController의 self.navigationController는 TabBarController를 감싸고 있는 NavigationController를 추적하게 된다.

 

TabBarController를 감싸는 NavigationController의 스택에서 Push가 되어 탭바가 가려지며 다음 화면으로 이동하게 된다. 

 

 

- 주의사항

 

UITabBarController와 UINavigationController는 둘다 self.title처럼 컨트롤러가 가진 기본 변수가 있기 때문에

 

위의 두 종류의 컨트롤러가 겹치는 변수일 경우엔 

 

self.navigationController.title이나 self.tabBarController.title 처럼 title의 컨트롤러를 명시해주는 것이 좋다..

'Swift' 카테고리의 다른 글

[Swift] 상단 탭바 페이지 뷰컨트롤러 만들기 (Upper Tab Page View)  (0) 2024.01.02
[Swift] UICollectionView 내부 내용에 따른 Cell 동적 높이 설정법  (0) 2023.11.10
[Swift] 앱스토어 셀 클릭 시 transition animation 적용하기  (0) 2023.10.26
[Swift] SceneKit 사용법  (0) 2023.06.15
[Swift] enum 의 raw value 에 대한 회고  (0) 2023.05.30
    'Swift' 카테고리의 다른 글
    • [Swift] 상단 탭바 페이지 뷰컨트롤러 만들기 (Upper Tab Page View)
    • [Swift] UICollectionView 내부 내용에 따른 Cell 동적 높이 설정법
    • [Swift] 앱스토어 셀 클릭 시 transition animation 적용하기
    • [Swift] SceneKit 사용법
    웰코발
    웰코발
    나의 개발 일지

    티스토리툴바

    단축키

    내 블로그

    내 블로그 - 관리자 홈 전환
    Q
    Q
    새 글 쓰기
    W
    W

    블로그 게시글

    글 수정 (권한 있는 경우)
    E
    E
    댓글 영역으로 이동
    C
    C

    모든 영역

    이 페이지의 URL 복사
    S
    S
    맨 위로 이동
    T
    T
    티스토리 홈 이동
    H
    H
    단축키 안내
    Shift + /
    ⇧ + /

    * 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.