【发布时间】:2020-12-12 00:01:28
【问题描述】:
我正在尝试打开与列表中所选行的名称相匹配的 pdf,但我收到错误 Cannot use instance member 'pdfName' within property initializer; property initializers run before 'self' is available。
我尝试初始化在视图之间传递的变量名,但没有运气。我知道这很简单,但我在传递数据时总是感到困惑。
这是第一个视图中的UIButton
@State var showingDetail = false
ForEach(0..<product.applicationNotes.count, id: \.self) { item in
Button(action: {
self.showingDetail.toggle()
}) {
Text(product.applicationNotes[item])
}.sheet(isPresented: $showingDetail) {
PDFKitView(pdfName: product.applicationNotes[item])
}
这是我尝试将数据传递到的第二个视图。我在第二行收到错误documentURL:
var pdfName: String
var documentURL = Bundle.main.url(forResource: pdfName, withExtension: "pdf")!
var body: some View{ PDFViewer(url: documentURL) .ignoresSafeArea(edges:.bottom) } }
struct PDFViewer: UIViewRepresentable {
var url: URL
func makeUIView(context:
UIViewRepresentableContext<PDFViewer>) -> PDFViewer.UIViewType {
let pdfView = PDFView()
pdfView.document = PDFDocument(url: self.url)
return pdfView
}
func updateUIView(_ uiView: UIView, context: UIViewRepresentableContext<PDFViewer>) {
}
}
这是我试图初始化它但不知道我哪里出错了:
init() {
self.pdfName = self.documentURL()
}
【问题讨论】:
-
我认为这个问题有一个简单的答案,但我认为一个最小(或至少“本地完成”)的例子会有所帮助。您发布了一些代码片段,但目前还不清楚(至少对我而言)它们在哪里以及它们之间的关系如何。也许您可以编辑帖子以使示例更易于理解。