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에 내비게이션 아이템을 추가해줌.