问题:访问 @Environment(.presentationMode) 会阻止我的 PDFView 显示。
工作代码:在 MainView 中通过 PDFViewer 显示 pdf 文档
import SwiftUI
struct MainView: View {
@State var pdfDocument: PDFDocument = PDFDocument()
var body: some View {
VStack {
PDFViewer(pdfDocument: $pdfDocument)
}
}
}
import SwiftUI
import PDFKit
struct PDFViewer UIViewRepresentable {
@Binding var pdfDocument: PDFDocument
let pdfView = PDFView()
func makeUIView(context: Context) -> some UIView {
pdfView.document = pdfDocument
pdfView.autoScales = true
return pdfView
}
func updateUIView(_ uiView: UIViewType, context: Context) {
print("update view called")
pdfView.document = pdfDocument
}
}
损坏的代码:不显示文档也不显示 PDFViewer(唯一的变化是访问 @Environment)
import SwiftUI
struct MainView: View {
@Environment(\.presentationMode) var presentationMode
@State var pdfDocument: PDFDocument = PDFDocument()
var body: some View {
VStack {
PDFViewer(pdfDocument: $pdfDocument)
}
}
}
import SwiftUI
import PDFKit
struct PDFViewer UIViewRepresentable {
@Binding var pdfDocument: PDFDocument
let pdfView = PDFView()
func makeUIView(context: Context) -> some UIView {
pdfView.document = pdfDocument
pdfView.autoScales = true
return pdfView
}
func updateUIView(_ uiView: UIViewType, context: Context) {
print("update view called")
pdfView.document = pdfDocument
}
}
问题:任何人都可以解释为什么访问此环境变量似乎会阻止子视图(pdfviewer)出现在主视图中吗?我知道 PDFViewer 正在被初始化,因为当它接收到数据时我仍然会收到更新调用。
我的计划是使用presentationMode 以编程方式弹出视图。
提前致谢。