UIViewController 에서 SwiftUI View Struct UI를 호출하는 방법 입니다.
SwiftUI TestView를 UIViewController 에서 사용합니다.
[UIKit 에서 SwiftUI 호출 ]
SwiftUI TestView
import SwiftUI
struct TestView : View {
var body: some View {
Text("안녕하세요!")
}
}
#if DEBUG
struct TestView_Previews : PreviewProvider {
static var previews: some View {
TestView()
}
}
#endif
UIKit TestViewController
TestViewController 에서 버튼 클릭시 SwiftUI TestView를 호출 할 때는 UIHostingController 를 이용하면 됩니다.
present를 하거나 push를 하거나 하면 됩니다.
import UIKit
import SwiftUI
class TestViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func testButton(_ sender: Any) {
let vc = UIHostingController(rootView: TestView())
self.present(vc, animated: true, completion: nil)
}
}
[SwiftUI 에서 UIKit 호출 ]
SwiftUI 에서 UIKit UIViewController 를 사용할 때는 UIViewControllerRepresentable을 상속받아서 사용합니다.
위에 만들어 놓은 TestViewController를 가져다 사용 하겠습니다.
import SwiftUI
struct TestDetailView: UIViewControllerRepresentable {
typealias UIViewControllerType = TestViewController
func makeUIViewController(context: Context) -> TestViewController {
return TestViewController()
}
func updateUIViewController(_ uiViewController: TestViewController, context: Context) {
// ??? 이건 추후 알아보는걸로...
}
}
struct TestDetailView_Previews: PreviewProvider {
static var previews: some View {
TestDetailView()
}
}
대충 임의의 View에서 NavigationLink 이용해서 TestDetailView 호출해주면 TestViewController가 열립니다.
NavigationLink {
TestDetailView()
} label: {
MainRowTitle(name: "UIKit ViewController Open")
}'SwiftUI' 카테고리의 다른 글
| [SwiftUI] App to App / Universal-Link Scheme 처리 이벤트 (0) | 2024.04.17 |
|---|---|
| [SwiftUI] View 백그라운드/포그라운드 이벤트 체크 (0) | 2024.04.17 |
| [SwiftUI] AppDelegate 추가해서 Push 설정하기 (0) | 2024.04.17 |
| [SwiftUI] TextField 화면 터치로 키보드 내리기(전역설정) (0) | 2024.04.17 |
| [SwiftUI] UIView <-> SwiftUI View 호출 방법 (0) | 2024.04.12 |