Container Controller

Container ViewController

샘플 Xcode 프로젝트 바로가기

UI Navigation Controller

UI Navigation Controller의 구조 : Navigation stack

NavBar


설정 방법

NavBar


View Controller의 구조

class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?
    
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        // 스토리보드와의 연결을 끊어놨기 때문에, 현재 UIApplication과 AppDelegate만 있는 상태로, UIWindow부터 새로 만들어야 한다.
        window = UIWindow(frame: UIScreen.main.bounds)
        
        // 01. instantiateInitialViewController() : initial로 설정된 뷰콘트롤러가 있을 경우 바로 인스턴스
        // let rootVC: ViewController = storyboard.instantiateInitialViewController() as! ViewController
        
        // 02. UIViewController()의 인스턴스를 바로 만들어서 rootViewController로 설정할 수도 있다.
        let rootVC = UIViewController()
        rootVC.view.backgroundColor = .blue
        
        // 03. main 스토리보드를 통해 ViewController의 인스턴스를 만들고, UINavigationController에 rootViewController로 추가한다.
        let storyboard = UIStoryboard(name: "Main", bundle: nil)
        let navRootVC: UIViewController = storyboard.instantiateViewController(withIdentifier: "ViewController") as! ViewController
        let naviController = UINavigationController(rootViewController: navRootVC)
        
        // 04. window의 rootViewController로 tabBarController를 설정한다.
        let tabBarController = UITabBarController()
        // 05. tabBarController에 viewController들을 array로 담는다.
        tabBarController.viewControllers = [rootVC, naviController]
        
        window?.rootViewController = tabBarController
        window?.makeKeyAndVisible()
        
        return true
    }
}

UINavigationController를 통한 Push, Pop

@IBAction func pushHandler(_ sender: Any) {

	// 스토리보드를 통해 ViewController를 instantiate 해준다.
	// 여기서는 itemDetailViewController 클래스의 인스턴스인 nextVC 뷰콘트롤러
 
    let nextVC: itemDetailViewController = self.storyboard?.instantiateViewController(withIdentifier: "itemDetailViewController") as! itemDetailViewController
    
    // 자신의 navigationController에게 nextVC 푸시를 요청한다 : pushViewController
    self.navigationController?.pushViewController(nextVC, animated: true)
}
    
func popAction() {
	// 자신의 navigationController에게 pop을 요청한다.
    self.navigationController?.popViewController(animated: true)
}

Navigation Bar

UI Navigation Item

UI Bar Button Item

let nextBtn = UIButton()
nextBtn.setTitle("🙃👉🏻", for: .normal)
nextBtn.addTarget(self, action: #selector(nextBtnHandler), for: .touchUpInside)
self.navigationItem.rightBarButtonItem = UIBarButtonItem(customView: nextBtn)

더 공부할 것