Присутствует встроенный подпросмотр SwiftUI в полноэкранном режиме, UIHostingController

#swift #swiftui #uikit #storyboard #uihostingcontroller

Вопрос:

Я работаю над приложением раскадровки Swift, которое хочет представить подпросмотр SwiftUI в полноэкранном режиме. Я встроил представление SwiftUI , используя UIHostingController , например, это:

 let contentView = UIHostingController(rootView: ContentView())

override func viewDidLoad() {
    super.viewDidLoad()
    addChild(contentView)
    view.addSubview(contentView.view)
 }
 

И это мой подпросмотр ContentView() SwiftUI:

 import SwiftUI
import UIKit

struct ContentView: View {
    var body: some View {
        Text("").fullScreenCover(isPresented: /*@START_MENU_TOKEN@*/.constant(true)/*@END_MENU_TOKEN@*/, content: {
            FullScreenView.init()
        })
    }
}

struct FullScreenView: View{
    var body: some View {
        NavigationView{
            MasterView()
        }.navigationViewStyle(DoubleColumnNavigationViewStyle())
    }
    }

struct MasterView: View {
     var body: some View {
            Form {
                Section(header: Text("HEADER")) {
                    Section {
                        NavigationLink(destination: UIKitView()) { Text("NAVLINK TEXT") }

                    }
                
                }
            }
            .navigationBarTitle("NAVBAR TEXT")
    }
}

struct UIKitView: UIViewControllerRepresentable {
    typealias UIViewControllerType = SwipeViewController

    func makeUIViewController(context: Context) -> SwipeViewController {
        let sb = UIStoryboard(name: "Storyboard", bundle: nil)
        let viewController = sb.instantiateViewController(identifier: "vc") as! SwipeViewController
        return viewController
    }
    
    func updateUIViewController(_ uiViewController: SwipeViewController, context: Context) {
        
    }
}
 

Есть ли лучший способ сделать это? Как вы можете видеть, я использую пустое текстовое поле для добавления .fullScreenCover :/

Спасибо за любую помощь!!

Комментарии:

1. Вопрос не ясен. что тебе надо? вы хотите полноразмерный подпросмотр без . fullScreenCover скрытого или прямого присутствия без полноэкранного просмотра без addChild?

2. Вам нужно будет использовать EmptyView() вместо Text("")