我有一个简单的 SwiftUI NavigationView,其中包含一个 NavigationLinks 列表,每个都设置为包含 UIViewControllerRepresentable 的 SwiftUI View 的目标(见下文)。
如何将 UIViewControllerRepresentable UINavigationController 连接到 SwiftUI 提供的根控制器?
import SwiftUI
import QuickLook
struct PublicationView: View {
@State private var localDocumentURL: URL?
var body: some View {
QuickLookView(url: localDocumentURL!)
}
}
struct QuickLookView: UIViewControllerRepresentable {
let url: URL
func makeUIViewController(context: Context) -> UINavigationController {
let controller = QLPreviewController()
controller.dataSource = context.coordinator
let navigationController = UINavigationController(rootViewController: controller)
return navigationController
}
func updateUIViewController(_ vc: UINavigationController, context: Context) {
//
}
func makeCoordinator() -> Coordinator {
return Coordinator(parent: self)
}
class Coordinator: NSObject, QLPreviewControllerDelegate, QLPreviewControllerDataSource {
let parent: QuickLookView
init(parent: QuickLookView) {
self.parent = parent
}
func numberOfPreviewItems(in controller: QLPreviewController) -> Int {
return 1
}
func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem {
return parent.url as NSURL
}
}
}