2010/10/16

[Objective-C][iPhone sdk]UIWebViewでローカルファイルを表示

UIWebViewを使ってある特定のURLを表示することはできたのですが、問題は、ローカルファイルを出力する場合。

プログラム内で動的に生成するなど、HTML が文字列の場合は、下記のように、baseURL 引数にリソースバンドルのパスを指定します。

[webView loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];

via:UIWebView を使ってリソースバンドル内の HTML ファイルで、外部 JavaScript や CSS を読み込む

ここでポイントとなるのは、baseURLの使い方。
[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]

を使うことで、baseURLで指定されているのは、Resourceグループ(画像はフォルダになっている)になっているのですが、

例えば、

Resourceグループの中に、testフォルダがあって、その中に、index.htmlファイルなどがあった場合だと上の方法だと若干不足でもうちょい処理を追加する必要があります。(フォルダ構成はちょうど下のような感じ)
Resource--test
|
--index.html

baseURLを下のように設定します。(下記の例では、– loadData:MIMEType:textEncodingName:baseURL:メソッドを使っています。)
[tempWebView
loadData:webData
MIMEType:@"text/html"
textEncodingName:@"utf-8"
baseURL:[NSURL fileURLWithPath:[
[[NSBundle mainBundle] bundlePath] stringByAppendingPathComponent:@"test"]]
];

[[NSBundle mainBundle] bundlePath]のところまでは先ほど同じで、違うところは、さらに、stringByAppendingPathComponentでパス先にあたるtestを追加し、改めてNSURLに変換しているところ。

こうすることで、フォルダの中にファイルがあってもhtmlを出力することができます。

他に参考にしたサイト
How can I access local html file using UIWebView



0 コメント:

コメントを投稿