swift - 使用swift从WebView中的列表显示PDF

标签 swift pdf tableview

我的应用程序中嵌入了 PDF 列表。我想使用 webView 一次显示一个 pdf,从 TableView Controller 中选择。来自 Neil Smith 的示例程序使用 webView 显示网页,使用详细 View Controller 中的以下代码片段:

if let address = webSite {
    let webURL = NSURL(string: address)
    let urlRequest = NSURLRequest(URL: webURL!)
    webView.loadRequest(urlRequest)

下面的代码片段做了我想要它做的,但只针对文件“TestPDF”

if let pdf = NSBundle.mainBundle().URLForResource("TestPDF", withExtension: "pdf",
    subdirectory: nil, localization: nil)  {
        let req = NSURLRequest(URL: pdf)
        let webView = UIWebView(frame: CGRectMake(20,20,self.view.frame.size.width-40,self.view.frame.size.height-40))
        webView.loadRequest(req)
        self.view.addSubview(webView)

我想更改它以便它从列表中选择一个 PDF,例如:

pdfAddresses = [
    "TestPDF.pdf",
    "TestPDF2.pdf",
    "TestPDF3.pdf",
    "TestPDF4.pdf",
    "testPDF5.pdf"]

segue 代码在 webAddress 列表上工作得很好:

if segue.identifier == "ShowAttractionDetails" {
        let detailViewController = segue.destinationViewController
            as! AttractionDetailViewController

        let myIndexPath = self.tableView.indexPathForSelectedRow()
        let row = myIndexPath?.row
        detailViewController.webSite = webAddresses[row!]

所以我不知道该怎么做是如何根据 TableView Controller 选择 pdf 文件。我想我需要创建一个变量......但我不确定。谢谢你的建议。

最佳答案

这里有一个简单的例子:

TableViewController.swift

import UIKit

class TableViewController: UITableViewController {
    //Your PDF list
    var pdfAddresses = [
        "TestPDF",
        "TestPDF2",
        "TestPDF3",
        "TestPDF4"]


    // MARK: - Table view data source

    override func numberOfSectionsInTableView(tableView: UITableView) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
        return pdfAddresses.count
    }


    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
        let cell = tableView.dequeueReusableCellWithIdentifier("cell", forIndexPath: indexPath) as! UITableViewCell

        // Configure the cell...
        cell.textLabel?.text = pdfAddresses[indexPath.row]  //Display PDF list in tableView
        return cell
    }

    override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {

        if segue.identifier == "ShowAttractionDetails" {
            let detailViewController = segue.destinationViewController as! AttractionDetailViewController

            let myIndexPath = self.tableView.indexPathForSelectedRow()
            let row = myIndexPath?.row
            //Pass selected cell title to next View
            detailViewController.webSite = pdfAddresses[row!]
        }
    }
}

AttractionDetailViewController.swift

import UIKit

class AttractionDetailViewController: UIViewController {
    //Outlet of webView but you can create it programatically too.
    @IBOutlet weak var webView: UIWebView!
    //This will hold data which is passed from first View
    var webSite : String?
    override func viewDidLoad() {
        super.viewDidLoad()
        //Load selected PDF into webView.
        if let webSite = webSite {
            println(webSite)
            if let pdf = NSBundle.mainBundle().URLForResource(webSite, withExtension: "pdf", subdirectory: nil, localization: nil)  {
                let req = NSURLRequest(URL: pdf)
                webView.loadRequest(req)
            }
        }
    }
}

检查这个SAMPLE项目以获取更多信息。

关于swift - 使用swift从WebView中的列表显示PDF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32390515/

相关文章:

ios - 没有名为 'AVCapturePhotoCaptureDelegate' 的类型或协议(protocol)

ios - 我应该如何使用 RxSwift 更新 UITableViewCell?

ios - 如何移动 Sprite Kit 中的对象?

javascript - 如何使用 AngularJS 动态加载数据生成 PDF?

swift - 如何在 Swift 中扩展短链接

javascript - React pdf-renderer 不显示字符 č、ć 和 đ

php - 在 TCPDF 中,如何将当前页码获取为整数?

JavaFX 表格 View 颜色

swift - 如何确定表格 View 中按下按钮的单元格

swift - 如何在表格 View 中获取超出绑定(bind)文本字段的值?