2013-10-02 79 views
1

我有這樣的代碼:的WebView loadHTMLString:基本URL:不加載CSS

NSURL *mainBundleURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]; 
[webView loadHTMLString:htmlFile baseURL:mainBundleURL]; 

我知道HTMLFILE是正確的。它裏面有:

<link rel="stylesheet" type="text/css" href="stylesheet.css"> 

我也知道mainBundle中的stylesheet.css。我檢查了project.app的內容。

問題是webview是空的。但是,如果我使用基URL作爲零:

[webView loadHTMLString:htmlFile baseURL:nil]; 

webview顯示的內容,但沒有css文件。

我不知道爲什麼這不起作用。提前致謝。

+0

順便說一句我正在嘗試使用ios 6.1 – lopes710

+0

爲什麼不從'NSURLRequest'加載html? –

+0

我只有一個字符串中的html文件。 – lopes710

回答

1

我該使用resourceURL財產

NSURL *baseURL = [[NSBundle mainBundle] resourceURL]; 

然後[webView loadHTMLString:htmlFile baseURL:baseURL];

-Sal

+1

這個問題需要很長時間才能解決,非常感謝。 –

0

Perhabs shouldStartLoadWithRequest方法阻止您的要求解決。試試這個:

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType 
{ 
    if ([request.URL.absoluteString hasPrefix:@"file"]) {return YES;} 

    //deal with the request 
} 
0

大多數實例引用baseUrl: nil但爲了訪問CSS文件,你需要引用包,以便<link rel="stylesheet" ...可以訪問該文件。

這是我在斯威夫特3溶液:

let baseUrl : URL = Bundle.main.resourceURL! as URL 
let htmlFile = Bundle.main.path(forResource: "*html file name*", ofType: "html") 
let htmlString = try? String(contentsOfFile: htmlFile!, encoding: String.Encoding.utf8) 
webView.loadHTMLString(htmlString!, baseURL: baseUrl) 

信用薩爾的回答指出了這一點。