[swift] SwiftUI 뷰의 스토리보드 연동

안녕하세요! 이번에는 SwiftUI와 UIKit을 함께 사용하는 방법 중 하나인 스토리보드와 SwiftUI 뷰를 연동하는 방법에 대해 알아보겠습니다.

1. UIHostingController를 사용하여 스토리보드와 SwiftUI 뷰 연동하기

UIHostingController는 SwiftUI 뷰를 UIKit 기반의 앱에서 호스팅할 수 있도록 제공하는 클래스입니다. 따라서, 스토리보드에 있는 UIViewController와 SwiftUI 뷰를 연동하기 위해서는 UIHostingController를 활용할 수 있습니다.

import SwiftUI

class MySwiftUIView: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let swiftUIView = MySwiftUIContentView()
        let hostingController = UIHostingController(rootView: swiftUIView)
        
        addChild(hostingController)
        view.addSubview(hostingController.view)
        hostingController.didMove(toParent: self)
    }
}

struct MySwiftUIContentView: View {
    var body: some View {
        Text("Hello, SwiftUI!")
    }
}

위의 예제 코드에서는 MySwiftUIView라는 UIViewController를 생성하고, 그 안에 MySwiftUIContentViewUIHostingController를 사용하여 호스팅하고 있습니다.

2. Storyboard Reference로 SwiftUI 뷰 사용하기

여기서는 UIStoryboard를 사용하여 스토리보드 내에서 SwiftUI 뷰를 호출하는 방법을 살펴보겠습니다.

먼저, 스토리보드에 Storyboard Reference를 추가하고, SwiftUI 뷰를 포함하고 있는 SwiftUI 스토리보드 파일을 참조합니다. 그리고 Storyboard Reference를 포함한 UIViewController에서 SwiftUI 뷰로 이동하도록 설정하면 됩니다.

import SwiftUI

class MyUIViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        
        if let swiftUIStoryboard = UIStoryboard(name: "SwiftUIStoryboard", bundle: nil).instantiateInitialViewController() {
            if let swiftUIHostingController = swiftUIStoryboard.children.first as? UIHostingController<MySwiftUIContentView> {
                addChild(swiftUIHostingController)
                view.addSubview(swiftUIHostingController.view)
                swiftUIHostingController.didMove(toParent: self)
            }
        }
    }
}

@available(iOS 13.0, *)
struct MySwiftUIContentView: View {
    var body: some View {
        Text("Hello, SwiftUI!")
    }
}

이와 같이 MySwiftUIContentView를 호출하는 swiftUIHostingController를 생성하여 UIViewController에 추가하는 방식으로 SwiftUI 뷰와 스토리보드를 연동할 수 있습니다.

이상으로 SwiftUI 뷰의 스토리보드 연동에 대해 알아보았습니다. SwiftUI와 UIKit을 함께 사용하여 더 다양하고 유연한 앱을 개발할 수 있는 방법이므로, 많은 개발자분들이 활용하시길 바라겠습니다.

더 많은 정보는 Apple Developer Documentation에서 확인하실 수 있습니다.