0

我正在使用 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?
4

2 回答 2

4

我们有一个类似的场景,其中要显示的文件是远程的。这是我们所做的:我们将数据源设置为 nil。这样做是显示一个加载图标。在 viewDidLoad 我们初始化远程请求并将文件保存在本地。下载文件后,我们正确设置数据源并刷新视图。

 //after file has been downloaded
 [self setDataSource:self];
 [self reloadData];
于 2013-01-29T17:06:49.320 回答
1

QLPreviewController并非真正设计用于下载文件-来自以下文档QLPreviewItem

@property (readonly) NSURL *previewItemURL;

Quick Look 预览控制器使用此属性来获取项目的 URL。在典型使用中,您将在预览项目类中实现一个 getter 方法来提供此值。

此属性的值必须是文件类型的 URL。

所以你真的应该使用其他东西来下载文件。它可能与网络资源一起使用,但它并不是为真正使用它而设计的。甚至不确定你是如何管理它的,因为我很确定如果你没有传递文件 URL,QuickLookController 会出错。控制器很可能将文件下载到临时目录或直接下载到内存。无论哪种方式,它都不供您使用。

您应该自己下载文件,然后将指向它的文件 URL 传递给 Quick Look 控制器。ASIHTTP如果您想让它更轻松,您可以使用网络库。

于 2011-05-05T18:20:34.780 回答