添加QLPreviewController作为子视图不会加载PDF

我试图添加一个QLPreviewController的视图作为子视图(不 – 我不能使用导航控制器或模式)。 它只显示QLPreviewController的结构背景。

我创build一个并将其添加为子视图:

QLPreviewController* preview = [[[QLPreviewController alloc] init] autorelease]; preview.dataSource = self; preview.delegate = self; preview.view.frame = CGRectMake(0, 0, self.pdfPreviewView.frame.size.width, self.pdfPreviewView.frame.size.height); self.pdfPreviewView.previewController = preview; [self.pdfPreviewView addSubview:preview.view]; [preview reloadData]; 

我的QLPreviewControllerDataSource方法正常工作(一次查看1个pdf文件):

 - (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index { NSString *path = [[ResourceManager defaultManager] pathForPDF:self.currentPDF]; NSURL *url = [NSURL fileURLWithPath:path]; if ([QLPreviewController canPreviewItem:url]) { return url; // This always returns } return nil; // This line is never executed } - (NSInteger)numberOfPreviewItemsInPreviewController:(QLPreviewController *)controller { return 1; } 

数据源方法总是返回文件的URL,QLPreviewController说它可以打开文件,但它实际上从来没有。 我只是背景。 在创buildQLPreviewController之前设置self.currentPDF,并包含正确的信息(来自CoreData)。

委托方法永远不会被调用。 但是我也没有以标准的方式使用它,所以这并不是完全意想不到的。

我也尝试调用[preview setNeedsLayout][preview setNeedsDisplay'][preview refreshCurrentPreviewItem]但只是调用数据源的方法,不要改变任何东西。

这些PDF是有效的。 我可以在Xcode和Preview中打开它们,所以这不是问题。 我有点为难,为什么这不起作用。 任何帮助,将不胜感激,让这个工作。

原来我发送QLPreviewController错误的path。 它没有正确find包中的PDF。 我需要使用pathForResource:ofType:inDirectory