2017-09-27 1 views

Répondre

0

Vous ne pouvez pas faire cela. La documentation peut bien expliquer à ce sujet, mais, vous voudriez essayer de faire votre propre visionneuse. Bonne chance!

Voir:

Oficial topic IOS

Vous pouvez faire comme le spectacle du site: "Création et configuration d'un contrôleur d'interaction document"

- (UIDocumentInteractionController *) setupControllerWithURL: (NSURL) fileURL 
usingDelegate: (id <UIDocumentInteractionControllerDelegate>) interactionDelegate { 

UIDocumentInteractionController *interactionController = 
    [UIDocumentInteractionController interactionControllerWithURL: fileURL]; 
interactionController.delegate = interactionDelegate; 

return interactionController;} 

« Une fois que vous avez un contrôleur d'interaction de documents, vous pouvez utilise ses propriétés pour obtenir des informations sur le fichier associé, y compris son nom, son type et son URL. "

+0

Bien sûr, vous pouvez le faire. C'est assez simple. – orkoden

+0

Oui, mais en créant votre propre script. Sans ressources explicitement pf la langue. –

+0

Voir ma réponse ci-dessus https://stackoverflow.com/a/46451323/1329214 – orkoden

0
  1. Afficher une sorte de spinner de progression.
  2. Téléchargez le fichier dans votre dossier ~/documents en utilisant URLSession et URLSessionDownloadTask.
  3. Cacher le curseur de progression.
  4. Ensuite, vous devez créer une instance d'une classe qui implémente QLPreviewControllerDataSource et contient votre document.
  5. Cacher les progrès spinner et présente QLPreviewController

    import UIKit 
    import QuickLook 
    
    
    class Document: NSObject, QLPreviewItem { 
        var previewItemURL: URL? 
    } 
    
    class PreviewDataSource: NSObject, QLPreviewControllerDataSource { 
    
        var document: Document? 
    
        func numberOfPreviewItems(in controller: QLPreviewController) -> Int { 
         return document != nil ? 1 : 0 
        } 
    
        func previewController(_ controller: QLPreviewController, previewItemAt index: Int) -> QLPreviewItem { 
         return document! 
        } 
    } 
    
    class ProgressLoadingViewController: UIViewController { 
    
        var session: URLSession = URLSession(configuration: URLSessionConfiguration.default) 
        var downloadTask: URLSessionDownloadTask? 
    
        var dataSource: PreviewDataSource? 
    
        override func viewDidLoad() { 
         super.viewDidLoad() 
         startDownload() 
        } 
    
        func startDownload() { 
         // start progres spinner 
         downloadTask = session.downloadTask(with: URL(string: "http://che.org.il/wp-content/uploads/2016/12/pdf-sample.pdf")!) { [weak self] (downloadLocation, response, error) in 
          guard // check if download went correctly 
           error != nil, 
           let filename = response?.suggestedFilename, 
           let downloadLocation = downloadLocation 
           else { 
            print("Something went wrong: \(error!)") 
            return 
          } 
    
          // copy file 
          let fileManager = FileManager.default 
          let targetPath = URL(fileURLWithPath: filename, relativeTo: fileManager.temporaryDirectory) 
          do { 
           try fileManager.copyItem(at: downloadLocation, to: targetPath) 
          } catch let fileError { 
           print("Copying failed: \(fileError)") 
           return 
          } 
    
          // prepare preview 
          let document = Document() 
          document.previewItemURL = targetPath 
          self?.dataSource? = PreviewDataSource() 
          self?.dataSource?.document = document 
    
          let qlViewController = QLPreviewController() 
          qlViewController.dataSource = self?.dataSource 
    
          // hide progress spinner 
          self?.present(qlViewController, animated: true) { 
           self?.downloadTask = nil 
           qlViewController.reloadData() 
          } 
         } 
         downloadTask?.resume() 
        } 
    } 
    

Bien sûr cette longue fonction d'achèvement devrait être divisé en plusieurs, puis transféré à sa propre classe DocumentDownloadManager.

+0

pouvez-vous me répondre pour l'objectif C ?? @orkoden – monali