QLPreviewController作为子视图

时间:2011-12-09 21:25:38

标签: pdf uiview datasource subview qlpreviewcontroller

使用QLPreviewController时遇到了一些问题。实际上,我必须在我的应用程序中显示PDF,如果我在UINavigationController应用程序中推送控制器,这个类工作正常。为此,我使用本教程:(http://iosdevelopertips.com/data-file-management/preview-documents-with-qlpreviewcontroller.html)。

问题是我需要在视图底部的UIToolbar伴随PDF。所以我创建了一个带有UIToolBar和QLPreviewController的新控制器,但是没有出现QLPreviewController:我对QLPreviewController视图的视图保持白色。

这是初始化代码并将控制器添加到视图中:

PdfReaderViewController = [[QLPreviewController alloc] init];
[PdfReaderViewController setDataSource:self];
[PdfReaderViewController setDelegate:self];
[PdfReaderViewController.view setFrame:myViewForPdfReader.frame];
[PdfReaderViewController setCurrentPreviewItemIndex:sollIndex];
vuePourLecteurPDF = PdfReaderViewController.view;    
[PdfReaderViewController reloadData];

我注意到两种方法中的一种......:

- (id <QLPreviewItem>) previewController: (QLPreviewController *) controller previewItemAtIndex: (NSInteger) index;
reloadData时不调用QLPreviewControllerDataSource的

。第二个返回一个正整数:

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

我不明白这个问题,我只知道两种方法都是正确的,因为我通过在UINavigationController中推送QLPreviewController来测试。

我读了一些帖子:

Customizing QLPreviewController

Adding QLPreviewController as subview doesn't load PDF

QLPreviewController's view

blank QLPreviewController in iOS application

......但这对我没有帮助

1 个答案:

答案 0 :(得分:0)

将QLPreviewController作为childViewController嵌入到新的自定义容器视图控制器中。 不要试图直接混淆其视图结构IMO