我正在使用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?
答案 0 :(得分:3)
我们有类似的情况,要显示的文件是远程的。这就是我们所做的:我们将数据源设置为nil。这样做是显示加载图标。在viewDidLoad中,我们初始化远程请求并在本地保存文件。下载文件后,我们正确设置数据源并刷新视图。
//after file has been downloaded
[self setDataSource:self];
[self reloadData];
答案 1 :(得分:1)
QLPreviewController
并非真正用于下载文件 - 来自QLPreviewItem
的文档:
@property (readonly) NSURL *previewItemURL;
快速查看使用此属性 预览控制器来获取项目 URL。在典型的使用中,你会的 在你的实现一个getter方法 预览项目类来提供此功能 值。
此属性的值必须是文件类型的网址。
所以你应该使用别的东西来下载文件。它可能与网络资源一起使用,但它并不是真正适用于它。甚至不确定你是如何管理它的,因为我很确定如果你没有传递文件URL,QuickLookController就会出错。控制器很可能将文件下载到临时目录,或直接下载到内存。无论哪种方式,它都无法供您使用。
您应该自己下载文件,然后向Quick Look控制器传递指向它的文件URL。如果您想让自己更轻松,可以使用ASIHTTP
等网络库。