1

ローカルのhtmlファイルを表示しているwebViewを持つviewControllerがあります。

問題は、読み込みに数秒かかることです。そのため、この待ち時間を避けようとしています。

私がこれまでに考えた最良の方法は次のとおりです。 メインページに入るとすぐに、webView にファイルをロードし始めます。このようにして、webView で infoViewController に入ると、既にロードされています。

コードは次のとおりです。

//mainViewController.m:

tempInfo = [[InfoViewController alloc]initWithNibName:@"InfoViewController" bundle:nil];

[tempInfo.webView123 loadRequest:[NSURLRequest requestWithURL:[NSURL fileURLWithPath:[[NSBundle mainBundle]pathForResource:@"About" ofType:@"htm"]isDirectory:NO]]];
tempInfo.test =@"test";

ご覧のとおり、テスト変数も追加しました。infoViewController に入ると、webView はロードされませんが、テスト変数の値が変更されます。これは、テスト変数の値を渡しているが、html ファイルを webView にロードしていないことを意味します。

何か案が?

4

1 に答える 1

1

あなたがiOSを使用していると仮定します。

WebView は安価ではなく、SDK の一部として提供される WebView は、ネイティブの Safari ウィンドウほど優れていません。

変数が変更される理由loadRequestは非同期です。

Webview に、ページをコールドから起動してロードするように効果的に要求しています。ページは、将来のある時点でロードを完了します。適切なデリゲート メソッドを実装することで、その時期を知ることができます。

あなたが試してみたいかもしれないいくつかのこと。

ビュー コントローラーがシングル ショット (使用および破棄) の場合は、リクエストをロードinitWithNibNameして、階層内の Web ビューを配置してみてviewDidLoadください。viewWillAppear

非常に単純な「Hello World」テキスト ファイルをロードして、ページかどうかを調べます。単純なファイルの方が時間がかからない場合は、ページを最適化する必要がある可能性があります。

ページ読み込みデリゲート メソッドを使用する

– webViewDidStartLoad:

– webViewDidFinishLoad:

– webView:didFailLoadWithError:

ページが「ロードされていない」という仮定が正しいかどうかを判断するため。

幸運を。

于 2013-08-27T12:42:48.623 に答える