ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Storyboard없이 Code로 UI구현하기
    iOS/UIKit 2021. 12. 28. 23:39

    모든 UI를 Code만으로 작성하기 위해서, Main Storyboard를 없애줄 것입니다.

    ⁉️ Tip
    시작하기 전에 간단한 팁을 하나 드리자면, 어떤 기능을 Storyboard에서가 아닌 Code로 구현하고 싶을 때
    구글에 programmatically라는 키워드를 통해 검색하면 조금 더 유용한 정보를 얻을 수 있습니다!

    총 3단계를 거치게 됩니다.

    첫 번째, Storyboard를 제거해줍니다.

    Storyboard를 모두 제거한다고, LaunchScreen까지 제거하면 안 됩니다..

    LaunchScreen을 코드로 작성해도 되나? 의 대답은 NO라고 하네요

    두 번째, Target의 Main Inferface를 지우고, Info.plist의 Storayboard Name을 삭제해줍니다.

    Main Interface를 삭제

    Info.plist의 Storyboard Name을 삭제

    이렇게 하면, App을 실행했을 때 프로그램은 우리에게 보여줄게 하나도 없어집니다.

    아무것도 없는 화면

    때문에 처음에 무엇을 보여줄지 알려주어야 하는데, 그것은 SceneDelegate에서 담당합니다.

    세 번째, 보여줄 ViewController을 지정해줍니다.

    결론적으로 아래와 같은 코드를 작성해줄 것입니다.

    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        window = UIWindow(windowScene: windowScene)
    
        let vc = ViewController()
        //만약 navigationController기능을 추가하고 싶다면 아래 코드를 사용하면 됩니다.
        //let nav = UINavigationController(rootViewController: vc)
    
        window?.rootViewController = vc
        window?.makeKeyAndVisible()
      }

    간단한 코드 설명

    위 함수에 대한 설명은 scene(_:willConnectTo:options:)에서 자세히 볼 수 있습니다.

    해당 method는 앱에 새로운 scene이 추가됐을 때 실행됩니다. (아이패드와 같은 경우에서, 멀티윈도우(?)가 추가됐을 때도 이 method가 실행)

    그 안에서 window라는 보이지는 않지만, 외부와 뷰를 연결해주는 역할을 하는 객체를 통해서 ViewController를 보여주게 됩니다.

    rootViewController로 보여주고 싶은 ViewController을 할당해주고,

    makeKeyAndVisible()을 통해서 KeyWindow로 설정해준 뒤 보여줍니다.

    여담이지만 확실히, App의 기본구성성분을 공부할 필요가 있는 것 같습니다.

    여러 가지 객체의 LifeCycle부터 용도까지 천천히 공부해봐야겠습니다.

    아무튼, 이렇게 하면 ViewController()가 초기 화면으로 보여지게 됩니다.

    댓글

Designed by Tistory.