iOS/UIKit

UIHostingController

Hamp 2024. 10. 12. 21:03
반응형

정의

 

swiftUI view를 관리하는 뷰컨틀롤러이다.

 

구현

swiftUI의 TextFiled의 text를 변경하여 UIViewController의 색을 바꾸는 미션을 해보자.

 

단계는 다음과 같다.

  1. SwiftUIView 구현 
  2. 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

 

반응형