2016-01-04 47 views
8

斯威夫特2.1.1 &的Xcode 7.1
我的代碼使用WKWebView和負載的index.html,形成局部的文件,但加載失敗index.css和其他javascript文件如圖所示頭標籤。加載本地的CSS和JS文件到WKWebView

我最好的猜測是baseURL不正確,如果是這樣,我該如何正確設置baseURL?由於

import UIKit 
import WebKit 

class ViewController: UIViewController { 
@IBOutlet var containerView: UIView! = nil //allows the class to refrence WKWebView 
var webView: WKWebView? 

override func loadView() { 
    super.loadView() 

    self.webView = WKWebView() 
    self.view = self.webView! 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let HTMLDocumentPath = NSBundle.mainBundle().pathForResource("index", ofType: "html") 
    let HTMLString: NSString? 

    do { 
     HTMLString = try NSString(contentsOfFile: HTMLDocumentPath!, encoding: NSUTF8StringEncoding) 
     let baseUrl = NSURL.fileURLWithPath("") 
     webView!.loadHTMLString(HTMLString as! String, baseURL: baseUrl) 

    } catch { 
     HTMLString = nil 
    } 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 

}

<head> 
 
     <meta charset="UTF-8"> 
 
     <title>RRR</title> 
 
     <link rel="stylesheet" href="jquery.mobile-1.4.5.css"/> 
 
     <link rel="stylesheet" href="index.css"/> 
 
     <script src="jquery-1.11.3.js"></script> 
 
     <script src="jquery.mobile-1.4.5.js"></script> 
 
     <meta name="viewport" content="width=device-width"/> 
 
    </head>

enter image description here

回答

6

有點讀here有關文件的網址,我能夠解決的問題後。

下面是代碼

import UIKit 
import WebKit 

class ViewController: UIViewController { 
@IBOutlet var containerView: UIView! = nil //allows the class to refrence WKWebView 
var webView: WKWebView? 

override func loadView() { 
    super.loadView() 

    self.webView = WKWebView() 
    self.view = self.webView! 
} 

override func viewDidLoad() { 
    super.viewDidLoad() 

    let baseUrl = NSURL(string: "file:///<yourFilePath>/abc/") 
    let path = NSBundle.mainBundle().pathForResource("abc/index", ofType: "html") 
    let HTMLString: NSString? 

    do { 
     HTMLString = try NSString(contentsOfFile: path!, encoding: NSUTF8StringEncoding) 
     webView!.loadHTMLString(HTMLString as! String, baseURL: baseUrl) 

    } catch { 
     HTMLString = nil 
    } 
} 

override func didReceiveMemoryWarning() { 
    super.didReceiveMemoryWarning() 
} 
} 
+3

嗨,你可以請描述你用來代替'文件到底是什麼路徑:/// /ABC /'?謝謝 –

+0

重要的是你的baseUrl以'file://'開始,確切的filePath並不重要 –

+0

Bundle.main.bundlePath(Swift 3) –