안녕하세요! 이번에는 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를 생성하고, 그 안에 MySwiftUIContentView
를 UIHostingController
를 사용하여 호스팅하고 있습니다.
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에서 확인하실 수 있습니다.