2017-01-04 4 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

Может быть, это всегда возвращается пустой экземпляр 'UIViewController' в методе' documentInteractionControllerViewControllerForPreview'. –

ответ

-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