UIKit

UIKit | 스토리보드 없이 코드로만 구현하고 싶다면? -1

ziziDev 2024. 7. 1. 16:38
반응형

 

 

만약 스토리보드 없이 코드로만 구현하고 싶다면?

 

Main 삭제

우선 스토리보드 Main을 삭제합니다

 

Scene Configuration 삭제

project - Info - Information Property List - Application Scene Manifest - Scene configuration

- Application Session Role - Item 0(Default Configuration)

- Storyboard Name (삭제)

 

 

Main storyboard file base name 삭제

project - Info - Main storyboard file base name 삭제

 

 

삭제하게되면 프로젝트 내 스토리보드는 사라진다

(런치 스크린 제외)

 

사실상 프로젝트를 처음 만들 때 스토리보드에 왼쪽 화살표가 처음 나타나는 화면을 의미하게되고

인스펙터창에서 view Controller 항목을 보게되면

is Initial View Controller 체크에 따라서 처음 화면 유무에 대해서 결정이 되는걸 알 수 있습니다

 

그래서 스토리보드에서는 자동적으로 설정이 되지만

코드로만 구현할 때는 씬 델리게이트에서 수행하게되는걸 추가적으로 설정을 해야합니다

 

 

UIScreen - Deprecated x

 

코드를 설명하자면

//앱이 처음 실행되거나 새로운 씬이 연결될 때 호출 
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
        //스토리보드를 사용하는 경우 window property는 자동적으로 초기화되며 scene에 연결됨
        
        //만약 페이지가 늘어났으면 네비게이션을 활용하여 화면전환을 해야하는데 어려움이 존재할 수 있습니다


        //scene(UIScene)을 UIWindowScene로 타입캐스팅
        guard let scene = (scene as? UIWindowScene) else { return }
        //UIWindow객체 생성함 현재 화면 전체 영역을 나타내고 영역에 맞는 UIWindow생성
        //방법 1
        window = UIWindow(frame: UIScreen.main.bounds)
        //생성한 UIWindow에 WindowScene을 설정하게됨
        window?.windowScene = scene
        //방법 2
        window = UIWindow(windowScene: scene)
        //네비게이션
//        let mainVC  = UINavigationController(rootViewController: ViewController())
//        window?.rootViewController = mainVC
        //UIWindow - rootViewController 설정 
        window?.rootViewController = ViewController()
        //UIWindow 화면에 표시 (visible)상태 만약 없으면 화면에 보이지 않음
        window?.makeKeyAndVisible()
    }

 

 

 

 

 

이렇게 적용만 공식같이 외워버리면 나중에 잊어버릴것 같고

 

왜 이렇게 작동하는지에 대해서 궁금해서 다음엔

자연스럽게 사용할 수 있다고 생각하기에

ViewController의 작동방법에 대해서 다루고자 합니다

 

 

 

 

rootViewController | Apple Developer Documentation

The root view controller for the window.

developer.apple.com

 

 

 

 

UIWindowSceneDelegate | Apple Developer Documentation

Additional methods that you use to manage app-specific tasks occurring in a scene.

developer.apple.com

 

반응형