访问 @Environment(\.presentationMode) 阻止 PDFView 出现

Accessing @Environment(\.presentationMode) stopping PDFView from appearing

问题:访问@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 以编程方式弹出视图。

提前致谢。

尝试改变PDFViewer如下

struct PDFViewer: UIViewRepresentable {

    @Binding var pdfDocument: PDFDocument

    func makeUIView(context: Context) -> PDFView {
        let pdfView = PDFView()
        pdfView.document = pdfDocument
        pdfView.autoScales = true
        return pdfView
    }

    func updateUIView(_ uiView: PDFView, context: Context) {
        print("update view called")
        uiView.document = pdfDocument
    }
}