2015-09-04 64 views
1

我有一個嵌入在我的應用中的PDF列表。我想使用webView從一個表視圖控制器中選擇一次顯示一個pdf。示例程序,由尼爾·史密斯,使用web視圖使用下面的代碼片段從一個細節視圖控制器來顯示網頁:使用swift在WebView中顯示列表中的PDF

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"] 

的賽格瑞代碼工作的webAddress名單就好了:

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

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

所以我不知道是什麼做的是如何選擇PDF文件,基於表視圖控制器。我想我需要創建一個變量......但我不確定。謝謝你的建議。

+0

什麼是'webAddresses'? – Bannings

+0

這是一個webview將會出現的網址列表。參見Neil Smith在IOS8上關於這個項目的例子。 – EzOpenToBuy

回答

0

下面是簡單的例子給你:

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更多信息。

+0

謝謝!這工作,我看到我有更多的學習要做。 – EzOpenToBuy