使用 swift 在 WebView 中显示列表中的 PDF
Displaying PDF from list in WebView using swift
我的应用程序中嵌入了 PDF 列表。我想使用 webView 一次显示一个 pdf,select 从 table 视图控制器编辑。来自 Neil Smith 的示例程序使用 webView 显示网页,使用详细视图控制器中的以下代码片段:
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)
我想更改此设置,使其 select 成为列表中的 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!]
所以我不知道该怎么做是如何select pdf 文件,基于table 视图控制器。我想我需要创建一个变量......但我不确定。谢谢你的建议。
这里有一个简单的例子供您参考:
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 项目以获取更多信息。
我的应用程序中嵌入了 PDF 列表。我想使用 webView 一次显示一个 pdf,select 从 table 视图控制器编辑。来自 Neil Smith 的示例程序使用 webView 显示网页,使用详细视图控制器中的以下代码片段:
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)
我想更改此设置,使其 select 成为列表中的 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!]
所以我不知道该怎么做是如何select pdf 文件,基于table 视图控制器。我想我需要创建一个变量......但我不确定。谢谢你的建议。
这里有一个简单的例子供您参考:
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 项目以获取更多信息。