iOS:如何清除PDFView?

iOS:如何清除PDFView?,ios,swift,pdfkit,pdfview,Ios,Swift,Pdfkit,Pdfview,我正在展示一些带有PDFView类的PDF文件。有一个问题是,当我加载或更好地说替换另一个文件时,加载新文件时最后加载的文件仍然可见 代码如下: var pdfView = PDFView() //MARK: - PDF KIT func previewPDF(url:URL) { if self.view.subviews.contains(pdfView) { self.pdfView.removeFromSuperview() // Remove it

我正在展示一些带有
PDFView
类的PDF文件。有一个问题是,当我加载或更好地说替换另一个文件时,加载新文件时最后加载的文件仍然可见

代码如下:

var pdfView = PDFView()
//MARK: - PDF KIT
func previewPDF(url:URL) {
    
    if self.view.subviews.contains(pdfView) {
         self.pdfView.removeFromSuperview() // Remove it
     } else {
        
     }
    
    pdfView = PDFView(frame: PDFPreview.bounds)
    pdfView.removeFromSuperview()
    
    pdfView.backgroundColor = .clear
    pdfView.displayMode = .singlePage
    pdfView.autoScales = true
    pdfView.pageShadowsEnabled = false
    pdfView.document = PDFDocument(url: url)
    
    thumbnail = PDFThumbnail(url: url, width: 240)
    
    // I tried to nil PDFPreview, still nothing happened
    PDFPreview.addSubview(pdfView)
}

在这里,您将pdfView添加为PDFPreview的子视图,但在第一次尝试删除它时,您将检查它是否存在于self.view的子视图中,但实际上它存在于PDFPreview的子视图中。因此,将其更改为以下代码

func previewPDF(url:URL) {
    if PDFPreview.subviews.contains(pdfView) {
       self.pdfView.removeFromSuperview() // Remove it
     } else { 
   
   }
而且,当您第二次尝试使用removeFromSuperview()删除它时,您已经实例化了另一个PDFView(),并且丢失了对旧PDFView的引用,因此删除旧PDFView也会失败

替代解决方案: 如果只是更改pdf文档,更好的解决方案就是更改PDFView的document属性。例如:

if let document = PDFDocument(url: path) {
    pdfView.document = document
  }

请检查此答案:-谢谢,我正在检查
self.view
而不是
PDFPreview
,现在可以了