상단 Navigation bar 실종 이슈

soy·2024년 12월 20일
2

iOS-UIKit

목록 보기
21/22

내 검색바 어디갓는교..
분명 SearchController로 상단 네비게이션을 만들어줬는데.. 사라졌다!


기존 코드

초기에 sceneDelegate에서 NavigationController를 설정해줌

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
    
        window = UIWindow(windowScene: windowScene)
        
        // MovieNetwork 초기화
        let movieNetwork = MovieNetwork(network: Network<MovieListModel>(endPoint: "https://api.themoviedb.org/3"))
        
        let tabBarVC = BottomTabbarViewController(movieNetwork: movieNetwork)
        let navigationController = UINavigationController(rootViewController: tabBarVC)
        
        // UINavigationController를 루트로 설정
        window?.rootViewController = navigationController
        window?.makeKeyAndVisible()
    }

문제점!

TabBar 화면을 하나의 Navigation으로 감싸는 것이 문제였다!

SceneDelegate의 구조:
NavigationController
   └── TabBarController
        ├── Tab1
        ├── Tab2
        └── Tab3

수정코드

func setupTabBarItem() {
    let homeVC = HomeViewController(movieNetwork: movieNetwork)
    let homeNavVC = UINavigationController(rootViewController: homeVC)  // 네비게이션 컨트롤러 추가
    homeNavVC.tabBarItem = UITabBarItem(title: "Home",
                                     image: UIImage(named: "icHomeOff"),
                                     selectedImage: UIImage(named: "icHomeOff"))
    
    let movieSearchVC = MovieSearchViewController()
    let searchNavVC = UINavigationController(rootViewController: movieSearchVC)
    searchNavVC.tabBarItem = UITabBarItem(title: "Search",
                                          image: UIImage(named: "icSearchOff"),
                                          selectedImage: UIImage(named: "icSearchOff"))
    
    let myPageVC = MyPageViewController()
    let myPageNavVC = UINavigationController(rootViewController: myPageVC)
    myPageNavVC.tabBarItem = UITabBarItem(title: "My",
                                          image: UIImage(named: "icMyOff"),
                                          selectedImage: UIImage(named: "icMyOff"))
    
    viewControllers = [homeNavVC, searchNavVC, myPageNavVC]
}

TabBar를 지정하는 코드에서 ViewController마다 UINavigationController를 지정해준다!!

NavigationController (루트)
   └── TabBarController
        ├── NavigationController1
        │      └── Tab1
        ├── NavigationController2
        │      └── Tab2 (SearchVC)
        └── NavigationController3
               └── Tab3

결과

야호 재등장!

profile
soysoisoyysauce~

2개의 댓글

comment-user-thumbnail
2024년 12월 20일

저는 제 멘탈 실종 이슈에요 .. 재등장 했다니 역시 믿고 있었닥우 !

1개의 답글