이번에는 코드로 내비게이션 컨트롤러를 구현해볼거예요
SceneDelegate 파일에 아래와 같이 코드를 입력해주면 됩니다.
// 파일 위치: SmokingAreaOdi/SceneDelegate.swift
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow? // 앱 화면을 담는 윈도우
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 rootVC = ViewController()
// 네비게이션 컨트롤러 생성 후 루트로 지정
let navController = UINavigationController(rootViewController: rootVC)
// 네비게이션 바 전역 스타일 예시 (옵션)
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .systemBackground
navController.navigationBar.standardAppearance = appearance
navController.navigationBar.scrollEdgeAppearance = appearance
// 윈도우에 네비게이션 컨트롤러 적용
window.rootViewController = navController
self.window = window
window.makeKeyAndVisible()
}
}
버튼 클릭 등 이벤트 시 화면 이동은 이렇게 하면 됩니다.
// 새로운 화면으로 이동할 때
let detailVC = DetailViewController()
navigationController?.pushViewController(detailVC, animated: true)
// 뒤로 돌아갈 때
navigationController?.popViewController(animated: true)
그리고 알게 된 점!
NavigationItem은 뷰컨 소속이라 내가 따로 만들어놓은 MainView(UI 설정 파일)에서는 설정 불가!
내비아이템에 소속되어있는 타이틀 등은 뷰컨에서 설정을 해줘야한다
override func viewDidLoad() {
super.viewDidLoad()
mainView.addButton.addTarget(self, action: #selector(didTapAddButton), for: .touchUpInside)
//이렇게
self.navigationItem.title = "Home"
}
그럼 이렇게 내비게이션 바가 뜨고
초록 + 버튼을 누르면 다음 화면으로 넘어간답니다~!
왜이렇게 느린지는 아직 모름...쩝
'iOS > 흡구오디' 카테고리의 다른 글
[흡구오디] Main 스토리보드 삭제하는 법! | 네이버 지도 마커 좌표 받아오기 (0) | 2025.07.17 |
---|---|
[흡구오디] 네이버 지도 위에 마커 표시하기 | 마커 고정하기 (1) | 2025.07.16 |
[흡구오디] 스토리보드 파일 없애고 코드로 새롭게 시작하기 (0) | 2025.07.16 |
[흡95디] 내 코드 톺아보기 공부하기 - ViewController.swift (0) | 2025.02.20 |
[흡구오디] 마커 터치 시 팝업으로 정보 표시해주기!를 하기 위한,,, (0) | 2025.02.14 |