Domanda

Sto usando QLPreviewController per recuperare e visualizzare un PDF remoto dal mio server. Funziona molto bene, dal momento che Apple ha integrato una bella grafica "caricando" mentre il file sta scaricando. Ora, vorrei anche usare UidocumentInteractionController che richiede un file locale. Ma, poiché QLPreviewController ha già scaricato il file, vorrei usarlo.

C'è un modo per ottenere il percorso locale al file scaricato QLPreviewController?

QLPreviewController *previewController = [[QLPreviewController alloc] init];
previewController.dataSource = self;
previewController.delegate = self;
previewController.currentPreviewItemIndex = 0;
[[self navigationController] pushViewController:previewController animated:YES];
[previewController release];
// Where is the file stored?
È stato utile?

Soluzione

QLPreviewController non è davvero progettato per scaricare file - dalla documentazione per QLPreviewItem:

@property (readonly) NSURL *previewItemURL;

Questa proprietà viene utilizzata da un controller di anteprima con look rapido per ottenere l'URL di un articolo. In uso tipico, implementeresti un metodo getter nella classe di elementi di anteprima per fornire questo valore.

Il valore di questa proprietà deve essere un URL di tipo file.

Quindi dovresti davvero usare qualcos'altro per scaricare il file. Potrebbe funzionare con una risorsa di rete, ma non è progettato per funzionare davvero con essa. Non sono nemmeno sicuro di come lo stai gestendo, perché ero abbastanza sicuro che un QuickLookController avrebbe fatto un errore se non avessi superato un URL di file. Molto probabilmente il controller sta scaricando il file su una directory temporanea o direttamente in memoria. Ad ogni modo, non è disponibile per te usare.

Dovresti scaricare il file da solo, quindi passare il controller rapido un URL di file che lo punta. Puoi utilizzare una libreria di networking come ASIHTTP Se volevi renderti più facile.

Altri suggerimenti

Avevamo uno scenario simile in cui il file da mostrare è remoto. Ecco cosa abbiamo fatto: abbiamo impostato la dati dati su zero. Ciò che fa è mostrare un'icona di caricamento. In ViewDidload inizializziamo la richiesta remota e salviamo il file localmente. Una volta scaricato il file, impostiamo correttamente la dati dati e aggiorniamo la vista.

 //after file has been downloaded
 [self setDataSource:self];
 [self reloadData];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top