개발/아이오에스

ios] 코드로 UITabBarController 만들고 탭 별 뷰컨트롤러 네비게이션 컨트롤러로 만들고 tabBarItem 수정하기

dev.jake 2021. 3. 8. 19:35

완성사진
구조

우선 각 각의 컨트롤러는 

import UIKit

 

class SearchController: UIViewController{

    override func viewDidLoad() {

        super.viewDidLoad()

        view.backgroundColor = .yellow

    }

}

이런식으로 백그라운드 색상만 설정은 해놨다.

 

그리고 UITabBarController을 상속받은 MainTabController에서  templateNavigationController함수를 만들어 각 각의 뷰컨트롤러를 네비게이션컨트롤러로 선언을 해주고 unselectedImageselectedImage를 설정을 해줬다.

 func configureViewControllers(){

        view.backgroundColor = .white

        

        let feed = templateNavigationController(unselectedImage:  imageLiteral(resourceName: "home_unselected"), selectedImage:  imageLiteral(resourceName: "home_selected"), rootViewController: FeedController())

        let search = templateNavigationController(unselectedImage:  imageLiteral(resourceName: "search_unselected"), selectedImage:  imageLiteral(resourceName: "search_selected"), rootViewController: SearchController())

        let imaegSelector = templateNavigationController(unselectedImage:  imageLiteral(resourceName: "plus_unselected"), selectedImage:  imageLiteral(resourceName: "plus_unselected"), rootViewController: ImageSelectorController())

        let notifications = templateNavigationController(unselectedImage:  imageLiteral(resourceName: "like_unselected"), selectedImage:  imageLiteral(resourceName: "like_selected"), rootViewController: NotificationController())

        let profile = templateNavigationController(unselectedImage:  imageLiteral(resourceName: "profile_unselected"), selectedImage:  imageLiteral(resourceName: "profile_selected"), rootViewController: ProfileController())

        

        viewControllers = [feed,search,imaegSelector,notifications,profile]

        

        tabBar.tintColor = .black

    }


viewControllers = [] 을 통해 각 텝을 초기화

 tabBar.tintColor = .black 을 통해 텝바의 색상을 설정해줬다.

 

    func templateNavigationController(unselectedImage: UIImage, selectedImage: UIImage, rootViewController: UIViewController)-> UINavigationController{

        let nav = UINavigationController(rootViewController: rootViewController)

        //rootViewController을 UINavigationController으로 선언을 해주는 부분

        nav.tabBarItem.image = unselectedImage

        nav.tabBarItem.selectedImage = selectedImage

        return nav

    }

 

UIViewController을 받아서 UINavigationController으로 리턴을 해주는 함수.