1

たとえば、プロジェクトにファイルを追加したときに、xcode の UIWebView に html5 ページをロードしたい: "for my html5:

css フォルダーがあります。javascript ファイルがあります。画像があります。フォルダー構造は次のようになります。

css/javascript/画像/

これらのフォルダーをxcodeに追加してプログラムを実行すると、xcodeはアドレスを取得できず、htmlページをロードできますが、他のフォルダーにあるため、画像、javascript、およびcssはありません。すべてのファイルを個別のフォルダーではなくまとめて配置しますすべてが機能しますが、xcode に実際のフォルダー構造を持たせたい (グループを使用したくない) 助けてください

例えば

ここで動作します

   NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"about.html" ofType:nil]]; 

しかし、次のような1つのフォルダーに追加すると

 NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"test/about.html" ofType:nil]];

リンクは機能しません。xcodeでこのパスの問題を修正するにはどうすればよいですか

すべてのcss、javascript、および画像がaboutフォルダーにある場合、about.htmlを実行すると、すべてがxcodeで機能します

しかし、それらを別のフォルダーに入れると、css / javascriptと画像を読み込めません

ヒントを教えてください

前もって感謝します!

編集 ::

 NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"page1.html" ofType:nil]];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];

このフォルダのようなものを使用したい: test/

[NSBundle mainBundle]pathForResource:@"test/page1.html" ofType:nil]];
4

1 に答える 1

1

インスタンスの baseURL をUIWebView、コンテンツを含むメイン バンドル内のディレクトリの URL に設定する必要があります。また、html からのリンクは相対である必要があります。

以下のコードは、私のコンテンツがメイン バンドルのルートにあることを考えると、基本的な方法です。

//find my html file
NSString *htmlFilePath = [[NSBundle mainBundle] pathForResource:@"htmlfile-to-load" ofType:@"html"];
//load it into an NSData
NSData *htmlData = [NSData dataWithContentsOfFile:htmlFilePath];
//get the URL of the bundles resource directory
NSURL *baseURL = [NSURL fileURLWithPath:[[NSBundle mainBundle] resourcePath] isDirectory:YES];
//load tableView
[self.webView loadData:htmlData MIMEType:@"text/html" textEncodingName:@"UTF-8" baseURL:baseURL];

別の方法で baseURL を取得する必要があるかもしれませんが、それがアイデアです。

于 2012-10-06T23:49:15.720 に答える