스토리보드 없이 프로젝트세팅을 해보았다.
// 윈도우 씬을 가져온다(원도우 씬에 대한 언래핑)
guard let windowScene = (scene as? UIWindowScene) else {return}
//윈도우의 크기 설정
window = UIWindow(frame: UIScreen.main.bounds)
// 뷰컨트롤러 인스턴스 가쟈오기
let vc = ViewController()
//네이게이션 컨트롤러 설정
let navVC = UINavigationController(rootViewController: vc)
//뿌리 뷰 컨트롤러 설정
window?.rootViewController = navVC
//설정한 윈도우를 보이게 끔 설정
window?.makeKeyAndVisible()
//윈도운씬 설정
window?.windowScene = windowScene
스토리보드를 없에고 SceneDelgate 다음과 같이 입력했다. (그냥 정대리님 영상따라 쳤다)
하던중 SceneDelegate 가 궁금해서 알아보았다
SceneDelegate는 화면에 무엇(scene/window)을 보여줄지 관리하는 역할을 한다고 한다 여기서
Scene 이란?
https://lena-chamna.netlify.app/post/appdelegate_and_scenedelegate/
Scene에는 UI의 하나의 인스턴스를 나타내는 windows와 view controllers가 들어있습니다. 또한 각 scene에 해당하는 UIWindowSceneDelegate 객체를 가지고 있고, 이 객체는 UIKit와 앱 간의 상호 작용을 조정하는 데 사용합니다. Scene들은 같은 메모리와 앱 프로세스 공간을 공유하면서 서로 동시에 실행됩니다. 결과적으로 하나의 앱은 여러 scene과 scene delegate 객체를 동시에 활성화할 수 있습니다.
SceneDelegate 에 있는 LifeCycle 메소드를 알아보자
scene(_: willConnectTo: options:)
scene이 앱에 추가될 때 호출, 단 여기서 ViewController와 같은 클래스 객체를 만들어 사용할 때, 아직 viewDidLoad()가 호출되지 않음
sceneDidDisconnect(_:)
scene의 연결이 해제될 때 호출
sceneDidBecomeActive(_:)
app switcher에서 선택되는 등 scene과의 상호작용이 시작될때 호출
app switcher - 홈 버튼을 두 번누르거나 아이폰 하단에서 위로 스와이프 했을 때 현재 실행중인 앱들이 보이는 화면
sceneWillResignActive(_:)
사용자가 scene과의 상호작용을 중지할 때 호출(다른 화면으로의 전환과 같은 경우)
sceneWillEnterForeground(_:)
scene이 foreground로 진입할 때 호출
sceneDidBackground(_:)
scene이 background로 진입할 때 호출
Scene 의 상태전환 이미지

'iOS > UIKit' 카테고리의 다른 글
| iOS - TabBarController (0) | 2022.07.02 |
|---|---|
| iOS - 컴플레션 블럭 (0) | 2022.06.28 |
| iOS - 스택자료구조 (0) | 2022.06.28 |