iOS/UIKit
UIHostingController
Hamp
2024. 10. 12. 21:03
반응형

정의

swiftUI view를 관리하는 뷰컨틀롤러이다.
구현
swiftUI의 TextFiled의 text를 변경하여 UIViewController의 색을 바꾸는 미션을 해보자.
단계는 다음과 같다.
- SwiftUIView 구현
- viewController에 UIHostingController와 함께 등록
1. swiftUI TextField 구현
struct CustomSwiftUITextView : View {
@Binding var text: String
var body: some View {
TextField("SwiftUI TextField", text: $text)
.padding()
.background(Color.blue)
}
}
2. 등록
class ViewController: UIViewController {
private var text: String = "" {
didSet {
self.view.backgroundColor = UIColor.random()
}
}
...
override func viewDidLoad() {
super.viewDidLoad()
let swiftUITextField = CustomSwiftUITextView(text: Binding(get: { self.text }, set: { newValue in
self.text = newValue
})
)
let hostingController = UIHostingController(rootView: swiftUITextField)
addChild(hostingController) // 부모에서 자식 등록 ,viewController의 children에 등록
view.addSubview(hostingController.view) // subview 등록
hostingController.view.translatesAutoresizingMaskIntoConstraints = false
hostingController.didMove(toParent: self) // 자식에서 부모를 등록
}
}
결과
출처
UIHostingController | Apple Developer Documentation
A UIKit view controller that manages a SwiftUI view hierarchy.
developer.apple.com
SwiftUI와 UIKit 같이 사용하기 | Hohyeon Moon
SwiftUI와 UIKit을 같이 사용하는 방법에 대해 알아봅니다
www.hohyeonmoon.com
반응형