1
NSInternalInconsistencyException', reason: 'Could not load NIB in bundle: 'NSBundle </Users/quantum/Library/Application Support/iPhone Simulator/6.1/Applications/19503C82-22E2-4787-A4F5-8D83EDD5D58B/foo.app> (loaded)' with name '_UIDocumentActivityViewController''

我正在创建一个QLPreviewController,呈现它以显示 PDF。然后我点击分享按钮。它崩溃了。

我下载了 Apple 的文档交互示例项目。我把我的 PDF 获取类放在那里,获取一个 PDF,显示它.. 它可以工作。分享按钮没有崩溃。两者都针对目标 6.1。我尝试将 Apple 的代码设置为仅像我的项目一样针对 iPad。他们的代码有效,我的无效,我很困惑。从错误消息来看,这听起来像是 SDK 中的一个错误,但我无法确定它。

你以前见过这个吗?

    QLPreviewController *previewController = [[QLPreviewController alloc] init];

    [previewController setDataSource:self];

    [previewController setDelegate:self];

    [self presentViewController:previewController animated:YES completion:^{}];



#pragma mark QLPreviewControllerDataSource

- (NSInteger) numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller {

    return 1;
}

- (id <QLPreviewItem>)previewController:(QLPreviewController *)controller previewItemAtIndex:(NSInteger)index {
    return [NSURL fileURLWithPath:self.pdfPath];
}

我尝试删除对框架的引用,删除派生数据,清理项目,读取QuickLook框架。我确实在 Apple 的项目和我的项目中都显示在 Finder 中,它们具有相同的路径。

当我使用UIDocumentInteractionController. 我的项目中没有加载带有电子邮件/打印等选项的小覆盖。

4

4 回答 4

1

Apple 支持为我提供了答案。我在一个类别中重写了一个 init 方法,这搞砸了类的初始化。道德:不要在类别方法中覆盖 init。

于 2013-07-25T16:49:06.617 回答
0

只是尝试initwithnib

QLPreviewController *previewController = [[QLPreviewController alloc] initWithNib: (QLPreviewController) bundle : nil];

希望它有效。

于 2013-05-29T04:56:19.210 回答
0

根据Apple 的文档, QL 生成器不应将 NIB 文件作为资源。

尽管 Quick Look 生成器没有(也不应该)将 nib 文件作为资源,但您可以在必要时添加其他资源。

于 2013-07-23T11:24:46.620 回答
0

如果您使用过 NavigationController,请使用:

QLPreviewController *previewController = [[QLPreviewController alloc] init];

[self.navigationController pushViewController:previewController Animation:YES];

别的

QLPreviewController *previewController = [[QLPreviewController alloc] init];

[self presentModalViewController:previewController Animation:YES];

于 2013-05-29T05:04:58.587 回答