QLPreviewController似乎会根据本地文件的URL缓存文件内容。在我的应用程序中,可以远程更新文件内容,这将导致下载新内容。
如果我在QLPreviewController中查看文件,对其进行远程更新,然后重新预览,该文件不会显示为已更新。
文件肯定会在磁盘上更新,并且其他控件会显示正确的更新文件。
我现在使用的变通方法基本上是在预览文件时将其移动到一个唯一的文件名(使用时间戳),这个文件名当然不会在QLPreviewController的缓存中。然而,这也有其他影响,例如,如果应用程序被杀死或崩溃(上帝保佑),我将不知道“在哪里”找到下载的文件。
我正在寻找侵入性更小的黑客,或者让QLPreviewController刷新其缓存的解决方案。这些API似乎没有公开任何东西,所以如果它比我上面介绍的要少一些(不包括将文件复制/移动到一个有保证的唯一URL,我已经在利用它),请不要害怕提交一个黑客攻击。
发布于 2013-03-15 23:02:01
我自己也遇到了这个问题。我解决这个问题的方法是,每次重新加载与当前查看的项目同名的项目时,都重新创建QLPreviewController。创建新的QLPreviewController将清除缓存。
我知道这是一个古老的问题,但可能会有人有同样的问题,并发现这个答案很有帮助。
发布于 2013-06-28 14:32:00
您应该在下载完成后使用refreshCurrentPreviewItem
发布于 2013-01-09 06:14:40
我也有同样的问题。打开本地生成的CSV文件。
我将_previewController*设置为控制器的@属性。然后我做了什么:
- (void)viewDidLoad
{
[super viewDidLoad];
self.previewController = [[QLPreviewController alloc] init];
_previewController.delegate=self;
_previewController.dataSource=self;
}
- (void)previewCSV
{
[_previewController reloadData]; // this triggers a reload
[self presentModalViewController:_previewController animated:YES];
}在其他解决方案中(未经过测试的)。
根据你的网址,你可以在网址中添加类似http://url?time=123456的内容。如下所示,您可以更改URL,但没有副作用。您可以在每次请求时更改的时间(或任何其他参数)。
https://stackoverflow.com/questions/13649555
复制相似问题