0

タブバーコントローラーがあり、1 つのタブ画面に Web ビューが含まれており、ロード中 (つまり、webview の didload デリゲートメソッド呼び出しの前) に google.com などのリクエストをロードし、別のタブに切り替えてから戻ると、スピナーはまだ実行されていますが、ページは読み込まれません。viewDidLoad は 1 回しか呼び出されないと思います。読み込みコードを viewDidAppear に配置する必要がありますか、それともこれを解決する方法はありますか?

ありがとう!

4

1 に答える 1

0

WebView が表示されるたびに更新する理由がわかりません。しかし、使用- (void)viewWillAppear:animated

編集:

OK、今更な情報を得たので、もっと情報を提供できます!

あなたの.hで:

BOOL *loaded

あなたの.mで:

- (void)viewWillAppear:animated {
     if (loaded == NO) {
         //load the website
     }
 }


- (void)webViewDidFinishLoad:(UIWebView *)webView { 
     [loaded setBool:YES];
 }


- (IBAction)loadWebsite {
    //if the user reloads or loads a new website do this:
    [loaded setBool:NO];
    //reload, or load the new website
}

UITableView をロードまたはリロードするには:

 NSString *urlAddress = urltextfield.text;
 NSURL *url = [NSURL URLWithString:urlAddress];
 NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];
 [webView loadRequest:requestObj];

明確化: ビューが読み込まれている場合は BOOL を YES に設定しているため、webview の読み込みが完了し、ユーザーが別のタブに切り替えて戻っても、WebView はリロードされません。しかし、WebView が完全にロードされていない場合、BOOl は NO を返し、WebView はリロードされます! WebView がリロードされるか、新しい Web サイトがロードされ、BOOL を NO に設定すると、何度もループします。BOOls はデフォルトでは NO であることに注意してください。

于 2011-08-15T00:53:56.950 に答える