2017-09-23 68 views
0

我想爲一個作業的Mac(非IOS)的PDF查看器,但我甚至無法弄清楚如何讓PDF實際顯示。我們必須使用PDFView和Quartz。 我看到關於這一主題使用的東西,最喜歡的教程:如何顯示與可可迅速(版本3.1)的PDF

view.setDocument(pdf) 

但是SWIFT說PDFView沒有成員setDocument。我通過文檔here而且即使遠程看起來會的工作是唯一的看起來setCurrentSelection所以我嘗試:

import Cocoa 
import Quartz 

@NSApplicationMain 
class AppDelegate: NSObject, NSApplicationDelegate { 
    @IBOutlet weak var window: NSWindow! 
    @IBOutlet weak var PDFV: PDFView! 


    func applicationDidFinishLaunching(_ aNotification: Notification) { 

     let fileURL:URL = (Bundle.main.url(forResource: "example", withExtension: "pdf")! as NSURL) as URL 
     let pdfDocument:PDFDocument = PDFDocument.self.init(url: fileURL as URL)! 
     let thing:PDFSelection = PDFSelection.self.init(document: pdfDocument) 
     PDFV.setCurrentSelection(thing, animate: true) 
     // Insert code here to initialize your application 
    } 

    func applicationWillTerminate(_ aNotification: Notification) { 
     // Insert code here to tear down your application 
    } 
} 

但是,這會導致窗口,當我運行它,並Xcode中說崩潰: 線程1: EXC_BAD_INSTRUCTION(代碼= EXC_I386_INVOP,子代碼0x0)。有誰知道我實際上打算使用什麼?

+0

對不起!忘了提及setCurrentSelection線 –

+0

上顯示的錯誤,我認爲你最好使用'webView'來顯示pdf –

+0

這是一個任務,我們需要使用PDFView。 –

回答

0

確實沒有setDocument方法,但有一個document屬性,您可以使用:

guard let pdfURL = Bundle.main.url(forResource: "test", withExtension: "pdf") 
    else { fatalError("PDF not found") } 

guard let pdfDocument = PDFDocument(url: pdfURL) 
    else { fatalError("PDF document not created") } 

pdfView.document = pdfDocument 

而且,也沒有必要將URL轉換爲NSURL,然後回一個網址。

+0

非常感謝!我將代碼移動到ViewController.swift,並將其與一個按鈕關聯,它完美地工作! –

+0

@JessyRuiter不客氣。是的,將它移動到視圖控制器是正確的。它並沒有在AppDelegate中佔有一席之地。 – nyg