QLPreviewController: где находится временный файл? - PullRequest
0 голосов
/ 05 мая 2011

Я использую QLPreviewController для извлечения и просмотра удаленного PDF с моего сервера.Это работает очень хорошо, так как Apple встроил красивую графику «Загрузка» во время загрузки файла.Теперь я также хотел бы использовать UIDocumentInteractionController, который требует локальный файл.Но, поскольку QLPreviewController уже загрузил файл, я хотел бы использовать его.

Есть ли способ получить локальный путь к файлу, который скачал 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?

Ответы [ 2 ]

3 голосов
/ 29 января 2013

У нас был похожий сценарий, когда отображаемый файл удален.Вот что мы сделали: мы установили источник данных на ноль.Это показывает значок загрузки.В viewDidLoad мы инициализируем удаленный запрос и сохраняем файл локально.Как только файл был загружен, мы правильно установили источник данных и обновили представление.

 //after file has been downloaded
 [self setDataSource:self];
 [self reloadData];
1 голос
/ 05 мая 2011

QLPreviewController не предназначен для загрузки файлов - из документации для QLPreviewItem:

@property (readonly) NSURL *previewItemURL;

Это свойство используется Quick Look контроллер предварительного просмотра, чтобы получить элемент URL. При обычном использовании вы бы реализовать метод получения в вашем класс элемента предварительного просмотра, чтобы обеспечить это значение.

Значением этого свойства должен быть URL-адрес типа файла.

Так что вы действительно должны использовать что-то другое для загрузки файла. Он может работать с сетевым ресурсом, но он не предназначен для реальной работы с ним. Даже не уверен, как вы справляетесь с этим, потому что я был уверен, что QuickLookController выдаст ошибку, если вы не передадите URL файла. Контроллер, скорее всего, загружает файл либо во временный каталог, либо непосредственно в память. В любом случае, он не доступен для использования.

Вы должны загрузить файл самостоятельно, а затем передать контроллеру Quick Look URL-адрес файла, указывающий на него. Вы можете использовать сетевую библиотеку, например ASIHTTP, если хотите облегчить вам задачу.

...