【问题标题】:how to load multiple PDF file in ViewController如何在 ViewController 中加载多个 PDF 文件
【发布时间】:2015-12-18 03:33:37
【问题描述】:

我有 4 个 PDF 文件本地存储在 Xcode 中。我想将所有 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];

请提供一些示例代码。

【问题讨论】:

  • 您想一次显示所有 PDF,还是只想显示名称并允许用户选择要打开的 PDF?
  • 只想显示名称并允许用户选择他们要打开的名称
  • 这四个文件是静态的,还是会变化的动态列表?
  • 静态只有我只想将此pdf添加到数组中并在用户选择pdf文件时在tableview中显示它应该在uiviewcontroller中打开这是工作流程

标签: ios iphone pdf uiwebview


【解决方案1】:

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

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

看看下面的链接...

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

【讨论】:

    【解决方案2】:

    将 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];
    

    如果您对此有任何疑问,请告诉我。

    【讨论】:

    • 您的答案部分正确,您能否修改您的答案以从本地路径中的 pdf 中获取名称
    • 我不确定你的意思?从 URL 收集文件名的字符串应该为您执行此操作。您是说您事先不知道 URL,但您是在动态抓取它们?
    • 你能给我更多关于到底发生了什么的信息吗?它崩溃了吗?还是只是什么都不显示?
    • 这不是一个实际的方法,伙计
    • 我没有给你方法。我给了你代码放在 viewDidLoadtableView:cellForRowAtIndexPath:tableView:didSelectRowAtIndexPath: 方法中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多