2009-04-26 8 views
0

すべてのタブの下に4種類のUIWebViewsを持つUITabBarベースのiPhoneアプリがあります。今すぐすべてのUIWebViewsが起動時に読み込まれ、少し時間がかかります。UITabBarアプリでのUIWebViewの読み込み遅延

まず、デフォルトのタブのUIWebViewをロードしてから、他のものをバックグラウンドでロードします。これを行う最善の方法は何ですか?

私は、各タブの設定別々ViewControllersを持っており、すべての.Mファイルでこれを持っている:発売後数秒のロードを開始するために、他の3つのタブを伝える代わりにするための簡単な方法はあり

- (void)viewDidLoad { 

NSString *urlAddress2 = @"http://google.com "; 

//Create a URL object. 
NSURL *url2 = [NSURL URLWithString:urlAddress2]; 

//URL Requst Object 
NSURLRequest *requestObj2 = [NSURLRequest requestWithURL:url2]; 

//Load the request in the UIWebView. 
[webView2 loadRequest:requestObj2]; 

} 

打ち上げ時に?それは良い考えですか?

ありがとうございます!

答えて

1

すべてのリクエストが通過するモデルレイヤーを実装することでこの問題を回避しました。要求は、一度に1つずつ、優先順位に従ってキューに入れられ、処理されます。コントローラがリクエストの優先度をエスカレートできるようにするための特定のメソッドを追加しました。必要に応じて、複数のリクエストが同時にアクティブになります。要求が完了すると、データのロード準備が完了したことをWebViewのコントローラに委譲するよう警告します。

設定する方法に応じて、コールバックを "webViewDidFinishLoad"(または、おそらくshouldStartLoadWithRequestまたはwebViewDidStartLoad)に配置して、モデルレイヤーをトリガーして次のリクエストをデキューして処理することができます。安全のために、モデルレイヤーにタイムアウトが必要です。

注:clickStandLoadWithRequestにカスタムコードを追加して、クリックとモデルレイヤーのデータプッシュを区別する必要があります。 navigationTypeに応じてNOまたはYESを返す必要があります。

0

NSTimerを使用するか、viewDidAppearなどの読み込みを行うことができます。

1

NSURLRequestの代わりにASIHTTPRequestを使用する場合は、最初のURLにはsynchronous requestを送信できます。リクエストが完了したら、他の3つのURLリクエストを非同期的に(つまりバックグラウンドで)オフにできます。

0

viewDidAppearを使用してください。ビューが完全に表示され、アニメーションが終了すると、コントローラに送信されます。