iOS 6.0 Quicklook QLPreviewController错误,带有:“找不到加载的代理的预览项目”

问题描述 投票:6回答:5

我的应用程序一直在使用QLPreviewController来显示所有类型的文件,并且在iOS 5.x中,似乎这样做还不错。

现在,在iOS 6.0中,我收到一个错误,它显示了控制器,但是具有恒定的加载指示器,并且从未实际加载任何东西。

日志中的错误是:找不到加载的代理的预览项目:-file://localhost/Users/me/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/E6A58F8D -71F3-4C7A-B16E-4BA017E318E5 / Documents / temp // Welcome.docx

其他人是否对iOS 6.0中的Quicklook有此或其他问题?或有什么建议可以尝试?我已经通过iPhone和iPad尝试过,同时按下了控制器并展示了它。

编辑:还刚刚注意到,所讨论的URL(他们说的是错误的URL)不仅以file://开头,而且以file:// localhost开头,而原始文件只是以实际路径开头(即:file:/ //用户)。

objective-c ios ios6 quicklook qlpreviewcontroller
5个回答
10
投票

经过一番研究并从头开始创建一个基本的QuickLook查看器,我发现即使实际上是在显示文档,但不是从我的原始项目中看到的,仍然记录了错误。

然后我尝试将QLPreviewController放置在NavigationController中,然后再显示它,并最终出现相同的问题。在呈现它之前,我将QLPreviewController包装在UINavigationController中,因为这似乎是为navigationItem分配自定义按钮的方式。在iOS 5.1(如上所述)中,效果很好,但显然iOS 6.0不喜欢这样。

删除将QLPreviewController包裹在UINavigationController中的多余代码似乎可以显示该文档。

包装控制器的示例:

QLPreviewController* previewer = [[QLPreviewController alloc] init];
previewer.dataSource = self;
previewer.delegate = self;
[previewer setCurrentPreviewItemIndex:0];

UINavigationController* previewNavCtrl = [[UINavigationController alloc] init];
[previewNavCtrl pushViewController:previewer animated:NO];

[self presentModalViewController:previewNavCtrl animated:YES];

更改为:

QLPreviewController* previewer = [[QLPreviewController alloc] init];
previewer.dataSource = self;
previewer.delegate = self;
[previewer setCurrentPreviewItemIndex:0];

[self presentModalViewController:previewer animated:YES];

注意:再次,代理错误似乎仍然显示在日志中,但是

还:如果没有NavigationController = /,则任何UIBarButtonItem定制似乎都不再起作用。

更新:我发现使用fileURLWithpath生成PreviewItemAtIndex的fileURL使原来的错误消失了。但是,仍然会在文档无法加载的地方出现相同的问题。

一个新错误(我也见过其他人也有一个错误:

无法发布路径的文件扩展名:/Users/me/Library/Application%20Support/iPhone%20Simulator/6.0/Applications/339DDF48-AF93-41B5-B81E-A39440A131C6/Documents/temp/Welcome1.docx

最终更新:好的,扩展问题/错误是因为当[NSString stringByAddingPercentEscapesUsingEncoding]必须已经处理时,我试图手动将%20添加到空格中(使用[NSURL fileURLWithPath]等)。一旦我删除了它,它就可以工作了,现在我在iOS 6上了!因此,真正的问题与UINavigationController无关,而实际上是通过PreviewItemAtIndex传递的文件URL。


1
投票

如果有人遇到相同的问题,我想回答这个老问题。


0
投票

我从远程网址下载了文件并保存在本地,然后我使用QLPreviewController显示PDF。在iOS 6中,它的工作方式。


0
投票

1)


0
投票

这里有一个简单的示例项目:https://github.com/MrThiago/AR-Sample它可以为您提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.