#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("")