2016-01-04 13 views
8

w Swift 2.1.1 & Xcode 7.1
Moje kod wykorzystuje WKWebView i mnóstwo index.html utworzyć plik lokalny, ale nie można załadować index.css i innych plików javascript, jak pokazano na głowie etykietka.Ładowanie lokalnych plików css i js do WKWebView

Moje najlepsze przypuszczenie jest takie, że bazaURL nie jest poprawna, jeśli tak, jak mogę ustawić baseURL poprawnie? Dzięki

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

Odpowiedz

6

Po kawałku czytania here o pliku url udało mi się rozwiązać ten problem.

Oto kod

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

Witam, czy mógłby pan opisać dokładnie co ścieżka stosowany zamiast 'file: /// /abc /'? Dzięki –

+0

Ważne jest, aby baza baseUrl zaczynała się od 'file: //', dokładna ścieżka filePath nie jest tak ważna –

+0

Bundle.main.bundlePath (Swift 3) –

Powiązane problemy