如何在ViewController中加载多个PDF文件

时间:2015-09-21 12:22:55

标签: ios iphone pdf uiwebview

我在Xcode中本地存储了4个PDF文件。我想将所有PDF放入一个数组中,然后在UITableView中显示它们。当用户选择其中任何一个时,它应该在下一个ViewController中打开。以下是显示一个PDF文件的示例代码,但我需要列出多个PDF文件:

NSURL *targetURL = [NSURL URLWithString:@"http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIWebView_Class/UIWebView_Class.pdf"];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[webpage loadRequest:request];

请提供一些示例代码。

2 个答案:

答案 0 :(得分:0)

将PDF加载到webpage对象的方式是一个好的开始。要使此代码更加动态以使用对象数组,您需要首先在视图控制器中实现UITableViewDelegateUITableViewDatasource协议。接下来,您需要在视图控制器类上创建NSArray个URL作为实例属性。在.m文件中,将其添加到@implementation部分上方:

@interface MyViewController ()
<
    UITableViewDataSource,
    UITableViewDelegate
>

@property NSArray *pdfFileUrls;

@end

然后确保为两个UITableView协议实现所有必需的方法。编译器会为您提供任何未实现的必需方法的警告,因此请注意这些方法。

然后在初始化程序或viewDidLoad中填充数组:

self.pdfFileUrls = [NSArray arrayWithObjects:@"url1", @"url2", @"url2", @"url4", nil];

假设您的文件URL包含文件名(如您的示例所示),则可以使用此数组中的URL为表格视图单元格创建标签。在tableView:cellForRowAtIndexPath:方法内部,使用此代码分配标签:

static NSString* identifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:identifier];

NSString* theFileName = [[[self.pdfFileUrls objectAtIndex:[indexPath row]] lastPathComponent] stringByDeletingPathExtension]
cell.textLabel.text = theFileName;

最后,在tableView:didSelectRowAtIndexPath:方法中,您需要从数组中获取正确的URL:

NSURL *targetURL = [NSURL URLWithString:[self.pdfFileUrls objectAtIndex:[indexPath row]]];
NSURLRequest *request = [NSURLRequest requestWithURL:targetURL];
[webpage loadRequest:request];

如果您对此有任何疑问,请与我们联系。

答案 1 :(得分:0)

这是预览文档的最佳方式..

QLPreviewControllerUIDocumentInteractionController提供了一个专门的视图,用于预览PDF,Excel,PPTX,Word等文档。使用这些API您可以全屏模式显示它或者您可以导航到下一个页。

请看下面的链接...

http://iosdevelopertips.com/data-file-management/preview-documents-with-qlpreviewcontroller.html