2009-03-10 10 views
1

私は、そのヘルプファイルを表示するためのUIWebViewを使用してアプリに取り組んでいます。その呼び出されたときのWebViewが...それ自身のビュー、DocViewControllerに住んでいるiPhone SDK:のUIWebView

- (void)viewDidLoad { 

方法は、適切なドキュメントのページをロードするために

[webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath: [[NSBundle mainBundle] pathForResource:docPage ofType:@"html"]isDirectory:NO]]]; 

を使用しています。ただし、最初のページが読み込まれると、ビューは静的になり、docPageが変更され、ビューが切り替わると新しいページが読み込まれません。要求されたときに新しいページが読み込まれるようにWebViewをクリアする方法はありますか?

編集:
最初の答えは私に混乱しています。次のルーチンがそのまま動作します。それはただ一度動作することです。ビューがロードされた後、このビューが再びオンに切り替えられ、要求されたhtmlページが異なると、最初に変更されません。ビューには、最初に要求されたhtmlページが表示され、新しい要求はロードされません。

- (void)viewDidLoad { 

    docPage = [NSString stringWithFormat: @"%d", hexpage]; 

    [webView loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[NSBundle mainBundle] pathForResource:docPage ofType:@"html"]isDirectory:NO]]]; 

} 
+0

は、すなわちハイパーリンクをタップし、あなたがプログラム的に新しい要求をロードするか、彼らはウェブビュー内の相互作用から生じるんです。後者の場合、パスに問題がある可能性があります。そのため、webURLにはどこにウェブルートがあるのか​​を伝えるbaseURLを使用します。 – nduplessis

+0

これはすべてプログラミングされています。コメントありがとう! – Alan

答えて

3

は一度だけ呼ばれます。これは、通常、ビューコントローラがメモリ不足の警告を受け取った場合にのみ発生します。 viewDidLoadの代わりに、そのコードをviewWillAppear:に入れてみてください。このコードは、ビューが画面に表示されるたびに呼び出されます。

2

ベースURLとしてあなたのHTMLが含まれているディレクトリにNSURLオブジェクトを渡すと、編集

NSString *path = [[NSBundle mainBundle] pathForResource:@"myfile" 
               ofType:@"html"]; 
NSString *html = [NSString stringWithContentsOfFile:path 
              encoding:NSUTF8StringEncoding 
               error:nil]; 

ようなものでHTML文字列をロード

- (void)loadHTMLString:(NSString *)string baseURL:(NSURL *)baseURL 

を使用してみてください:作る、また あなたのハイパーリンクがtarget = "_ blank"のような新しいウィンドウで開こうとしていないことを確認しても、あなたのwebviewはそれらを開けません

ビューを解放し、再ロードする必要がある場合を除き