iOS 6.0 Quicklook QLPreviewController 错误:“无法找到已加载代理的预览项目”

2024-06-28

我的应用程序一直使用 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 //欢迎.docx

还有其他人在 iOS 6.0 中使用 Quicklook 时遇到此问题或其他问题吗?或者有什么建议可以尝试吗?我已经通过 iPhone 和 iPad 尝试过按下控制器并呈现它。

编辑:还注意到有问题的 URL(他们说不好的 URL)不仅以 file:// 开头,还以 file://localhost 开头,而原始文件只是以实际路径开头(即: file:///用户)。


经过大量研究并从头开始重新创建一个基本的 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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

iOS 6.0 Quicklook QLPreviewController 错误:“无法找到已加载代理的预览项目” 的相关文章

随机推荐