我正在尝试添加 QLPreviewController 的视图作为子视图(不,我不能使用导航控制器或模式)。它仅显示 QLPreviewController 的结构背景。
我创建一个并将其添加为子视图:
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 表示它可以打开该文件,但实际上从未这样做。我只是了解背景。这self.currentPDF
在我创建 QLPreviewController 之前设置,并且包含正确的信息(来自 CoreData)。
委托方法永远不会被调用。但我也没有以标准方式使用它,所以这并不完全出乎意料。
我也尝试过打电话[preview setNeedsLayout]
, [preview setNeedsDisplay']
, and [preview refreshCurrentPreviewItem]
但那些只是调用数据源方法并且不会改变任何内容。
PDF 有效。我可以在 Xcode 和 Preview 中打开它们,所以这不是问题。我有点困惑为什么这行不通。任何帮助使其发挥作用将不胜感激。