Code

[iOS]2025.04.21 UINavigationController

ioskkt 2025. 4. 21. 19:26

UINavigationController

//  SceneDelegate.swift

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        
        guard let windowScene = (scene as? UIWindowScene) else { return }
        let window = UIWindow(windowScene: windowScene)
        
        // 메인 뷰 컨트롤러 선언
        let mainViewController = ViewController()
        
        // 내비게이션 컨트롤러의 루트 뷰 컨트롤러는 메인 뷰 컨트롤러 임을 명시해줌.
        let navigationController = UINavigationController(rootViewController: mainViewController)
        
        // 윈도우의 루트 뷰 컨트롤러는 내비게이션 컨트롤로 임을 선언.
        window.rootViewController = navigationController
       
       window.makeKeyAndVisible()
        self.window = window
    }

 

내비게이션 컨트롤러를 쓰려면

1. SceneDelegate에서 메인 뷰 컨트롤러를 선언해줌.

2. 내비게이션 컨트롤러를 선언해주고, 루트 뷰 컨트롤러는 메인 뷰 컨트롤러 임을 명시해줌.

3. 윈도우의 루트 뷰 컨트롤러는 내비게이션 컨트롤러 임을 선언해줌.


 

//  ViewController.swift

@objc
    func buttonTapped() {
        navigationController?.pushViewController(PhoneBookViewController(), animated: true)
    }

버튼 액션 부분에 다음 화면으로 넘어가는 메서드를 작성함.

 


//  PhoneBookViewController.swift

override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .white
        
        // 내비게이션 아이템
        navigationItem.title = "연락처 추가"
        // 오른쪽 버튼
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "적용", style: .plain, target: self, action: #selector(adjustButtonTapped))

 

버튼을 누른 후 화면 전환이 된 뷰 컨트롤러 부분의 ViewDidLoad에 내비게이션 아이템을 추가해줌.