2017-01-04 52 views
0

我認爲在Swift中發生了一些變化,使我無法預覽我的文件。它以前工作得很好。如果我點擊在我的應用中說PDF文件,我會看到PDF的標題,但PDF(預覽)區域的內容不顯示。Swift3文件預覽不起作用

以下是我的代碼&日誌&也是截圖。如果有人有我能解決問題的想法,任何幫助將不勝感激。

// When file is clicked this method is called 
@objc private func handleTapped() { 
guard let url = self.file.fileUrl else { return } 

if self.file.isDownloaded { 
    self.showDocumentController(url: self.file.urlInDocumentsDirectory! as NSURL) 
    return 
} 

SVProgressHUD.showProgress(0) 

let destination: DownloadRequest.DownloadFileDestination = { _, _ in 
    let documentsURL = FileManager.default.urls(for: .documentDirectory, in: .userDomainMask)[0] 
    let fileURL = documentsURL.appendingPathComponent("pig.png") 
    return (documentsURL, [.removePreviousFile, .createIntermediateDirectories]) 
} 

Alamofire.download(url, to: destination) 
    .downloadProgress { (download) in 
    DispatchQueue.main.async() { 
     SVProgressHUD.showProgress(Float(download.fractionCompleted)) 
    } 
    }.validate(statusCode: 200..<300) 
    .response { (response) in 
    SVProgressHUD.dismiss() 
    guard response.response?.statusCode == 200 else { return } 
    let directoryURL = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0] 
    let pathURL = URL(fileURLWithPath: directoryURL, isDirectory: true) 
    //pathURL: file:///var/mobile/Containers/Data/Application/6DDCCC30-107C-4613-B63D-18962C3D06D3/Documents/ 

    guard let fileName = response.response?.suggestedFilename else { return } 
    //fileName: 05_기조강연_RobertMankin_BETTER+OFFICES+GREATER+INNOVATION.pdf 

    let fileURL = pathURL.appendingPathComponent(fileName) 
    //fileURL: file:///var/mobile/Containers/Data/Application/6DDCCC30-107C-4613-B63D-18962C3D06D3/Documents/05_%E1%84%80%E1%85%B5%E1%84%8C%E1%85%A9%E1%84%80%E1%85%A1%E1%86%BC%E1%84%8B%E1%85%A7%E1%86%AB_RobertMankin_BETTER+OFFICES+GREATER+INNOVATION.pdf 
    self.saveFileURL(url: fileURL as NSURL) 
    self.showDocumentController(url: fileURL as NSURL) 
} 
} 

private func saveFileURL(url: NSURL) { 
self.file.urlInDocumentsDirectory = url as URL 
let realm = RealmService.defaultRealm 
try! realm?.write { 
    realm?.add(self.file, update: true) 
} 
self.file = self.file.copyFromRealm() 
} 

private func showDocumentController(url: NSURL) { 
let docController = UIDocumentInteractionController(url: url as URL) 
docController.delegate = self 
docController.presentPreview(animated: true) 
} 

// MARK: UIDocumentInteractionControllerDelegate methods 

func documentInteractionControllerViewControllerForPreview(_ controller: UIDocumentInteractionController) -> UIViewController { 
if let controller = UIApplication.shared.keyWindow?.topMostViewController() { 
return controller 
} 
return UIViewController() 
    } 

this is how the preview shows

+0

可能是它總是在方法'documentInteractionControllerViewControllerForPreview'返回空'UIViewController'實例。 –

回答

-1

這裏是代碼

import UIKit 
import Alamofire 

class ViewController: UIViewController, UIWebViewDelegate 
{ 
    @IBOutlet weak var WebView: UIWebView! 
    var NewsURL: String = "" 

    override func viewDidLoad() 
    { 
    super.viewDidLoad() 
    Self.LoadPdf() 
    } 

    func LoadPdf() 
    { 
    let url = NSURL (string: "\(http://)") //Your Pdf URL Here 
    let requestObj = NSURLRequest(URL: url!); 
    WebView.loadRequest(requestObj) 
    } 
} 
+1

在Swift中,屬性,變量和方法應該以小寫字母開頭。另外要小心不要混淆'self'和'self',這不是同一個命令! – Moritz