코드로 내비 구현하기
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
let naviController = UINavigationController(rootViewController: ViewController())
window?.rootViewController = naviController
window?.makeKeyAndVisible()
}
SceneDelegate 파일에 위와 같이 구현해주면 됨!
근데 이 코드를 보니 루트 뷰 컨트롤러가 뭔지 했갈렸다
그래서 뷰컨이 루트라는거임? 내비컨이 루트라는거임???
루트 뷰 컨트롤러는?
- ViewController()는 루트가 아님
- UINavigationController가 루트 뷰 컨트롤러임 → window?.rootViewController = naviController
그럼 ViewController는 뭐임?
- ViewController()는 UINavigationController의 루트 뷰 컨트롤러
- UINavigationController(rootViewController: ViewController())
- 즉, 화면에는 ViewController가 처음 보이지만,
그걸 감싸고 있는 컨트롤러는 UINavigationController
계층 구조 예시:
UIWindow
└── UINavigationController ← window의 루트
└── ViewController ← 네비게이션 스택의 루트
정리하자면!!!
내비컨은 루트 뷰 컨
뷰컨은 내비컨의 루트 뷰 컨
헷갈린다 ㅎ
'TIL' 카테고리의 다른 글
250622 TIL | 기능 구현 팁, switch / enum, 초기화, 패턴 등 (0) | 2025.06.22 |
---|---|
250615 TIL | 사이판에서 돌아왔아요 (0) | 2025.06.15 |
250523 TIL | firebase SPM과 Pod이 꼬이다... 해결방법...! (2) | 2025.05.23 |
250520 TIL | 셀 재사용부터 앱 생명주기까지 (0) | 2025.05.20 |
250511 TIL | 메모리 누수, Firebase Firestore, SPM, TableViewCell 등등 (0) | 2025.05.11 |