
UITabBarController에서 각 탭의 뷰 컨트롤러에 UINavigationController를 사용하고 싶었지만, 하위 뷰 컨트롤러에서 navigationController?.pushViewController가 작동하지 않음.
setupTabBar 메서드에서 각 탭의 UIViewController를 UINavigationController로 감싸고 싶었으나, viewControllers 배열에 직접 뷰 컨트롤러를 추가함.UINavigationController가 무시되었고, navigationController가 nil로 출력됨.UITabBarController의 viewControllers 배열에 UIViewController를 직접 추가했기 때문에 UINavigationController 계층이 올바르게 설정되지 않음.
UINavigationController로 각 뷰 컨트롤러를 감싸고, viewControllers 배열에 UINavigationController를 추가하도록 수정.

잘 이동하는 모습이다.
private func setupTabBar() {
// 각 뷰 컨트롤러 생성 및 네비게이션 컨트롤러로 감싸기
let movieListVC = MovieListViewController()
let movieListNavVC = UINavigationController(rootViewController: movieListVC)
let searchVC = SearchViewController()
let searchNavVC = UINavigationController(rootViewController: searchVC)
let mypageVC = MyPageViewController()
let mypageNavVC = UINavigationController(rootViewController: mypageVC)
// 탭바 아이템 설정
movieListVC.tabBarItem = UITabBarItem(title: "홈", image: UIImage(systemName: "house.fill"), tag: 0)
searchVC.tabBarItem = UITabBarItem(title: "검색", image: UIImage(systemName: "sparkle.magnifyingglass"), tag: 1)
mypageVC.tabBarItem = UITabBarItem(title: "마이", image: UIImage(systemName: "rectangle.badge.person.crop"), tag: 2)
// 탭바 스타일 설정
self.tabBar.tintColor = .black
// UINavigationController 배열을 viewControllers에 추가
viewControllers = [movieListNavVC, searchNavVC, mypageNavVC]
}
navigationController가 정상적으로 초기화되었는지 확인print(navigationController) // UINavigationController 출력
navigationController?.pushViewController(DetailViewController(), animated: true)
UITabBarController의 viewControllers는 반드시 UINavigationController를 포함해야 하위 뷰 컨트롤러에서 navigationController를 사용할 수 있다.viewControllers = [UIViewController]로 설정하면 네비게이션 컨트롤러 계층이 무시됨.UITabBarController에서 네비게이션 기능을 사용하려면 각 탭의 뷰 컨트롤러를 반드시 UINavigationController로 감싸야 한다.viewControllers 배열에 올바른 계층 구조를 설정하지 않으면 예상치 못한 동작이 발생할 수 있다.
모아나 2 3장이요~