如何在iOS应用程序中使用PDFThumbnailView

时间:2018-02-11 23:00:56

标签: ios swift pdfkit

我正在尝试使用PDFKit中的PDFThumbnailView来显示pdf文档的缩略图,但我无法使其工作。控制台中没有显示错误。我只是得到一个空白的viewController。以下是我的代码。请问有人可以告诉我哪里出错了吗?

我拖动了一个UIView对象并为其分配了以下类' PDFThumbnailView'。

enter image description here

 import UIKit
 import PDFKit

 class pdfThumbNailViewController: UIViewController {


@IBOutlet weak var myThumbNailView: PDFThumbnailView!

override func viewDidLoad() {
    super.viewDidLoad()

    // create PDFView Object
    // Then assign this object as the variable of thumbnailview object
    let myPDFViewObject = PDFView.init()
    if let path = Bundle.main.path(forResource: "paper", ofType: "pdf"){
        let url = URL.init(fileURLWithPath: path)
        if let pdfDocument = PDFDocument.init(url: url){
            myPDFViewObject.document = pdfDocument

        }
    }
    // Setting thumbnail size
    let size = CGSize.init(width: 50, height: 50)
    myThumbNailView.thumbnailSize = size
    myThumbNailView.layoutMode = .vertical
    myThumbNailView.pdfView = myPDFViewObject

}
}

2 个答案:

答案 0 :(得分:2)

你得到一个空白的ViewController,因为你根本没有使用myThumbnailView ..

viewDidLoad中,您创建了一个缩略图视图并为其分配了数据,但您实际上从未使用过IBOutlet myThumbNailView ..因此它是空白的,并且在viewDidLoad时取消分配本地视图结束。

TLDR:thumbNailObject != myThumbNailView ..您使用了错误的对象引用。

答案 1 :(得分:0)

是的 - 在您当前的代码中,您遇到了内存问题,这就是您最终看不到任何内容的原因:

您已在let myPDFViewObject: PDFView内定义了viewDidLoad(),而PDFView只存在于该方法块中;一旦达到方法结束,您的PDFThumbnailView就会被取消分配,而PDFView又不再关联let myPDFViewObject: PDFView

您只需在viewDidLoad()之上和之外移动PDFView就可以解决您的问题,从而确保let myPDFViewObject = PDFView() override func viewDidLoad() { super.viewDidLoad() // Then assign this object as the variable of thumbnailview object if let path = Bundle... 能够长寿

快乐的编码!

with cte as (
     SELECT R.ReportId, R.CreatedDate, RS.SpecialtyId,
            ROW_NUMBER() OVER (PARTITION BY RS.SpecialtyId 
                               ORDER BY R.CreatedDate DESC) as rn

     FROM Report R
     JOIN ReportSpecialty  RS
       ON R.ReportId = RS.ReportId 
      AND RS.IsPrimarySpecialty = 1
     WHERE RS.SpecialtyId IN ( .... ids ... )
)

 SELECT TOP 10 *
 FROM cte
 ORDER BY rn, CreatedDate DESC