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