【发布时间】:2011-11-07 22:08:45
【问题描述】:
我正在尝试将 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'] 和[preview refreshCurrentPreviewItem],但它们只是调用数据源方法并没有改变任何东西。
PDF 是有效的。我可以在 Xcode 和 Preview 中打开它们,所以这不是问题。我有点困惑为什么这不起作用。任何帮助将不胜感激。
【问题讨论】:
-
嗨,您有没有办法将 QLPreviewController 按钮放置在“正常”navigationItem 位置以外的其他位置?
标签: objective-c ios quicklook