본문 바로가기

iOS/UIKit

iOS - 프로젝트세팅, SceneDelegagte

 

스토리보드 없이 프로젝트세팅을 해보았다. 

 

 // 윈도우 씬을 가져온다(원도우 씬에 대한 언래핑)
        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