2011-07-04 15 views
39

私はプログラミングビジネス全体に非常に新しく、次のビューの読み込みシンボルが表示されないように、iPhoneプログラミングでUIWebViewの内容を消去する方法があるかどうか疑問に思っていました最後のビューの前に 多くのありがとう、 トーマスUIWebViewを消去する方法

答えて

139

URLをabout:blankに設定して、ページをリロードしてみてください。

+2

おかげメイト、私はUを投票します私は十分なランクを持っていません –

+0

あなたは大歓迎です! –

+2

'webViewDidFinishLoad'デリゲートメソッドが起動されない代替手段を知っていますか? (nil'ing代理人は実用的ではありません。クリアにはすぐに別のコンテンツがロードされますので、すぐに応答する場合はデリゲートを用意してください...最初のロード後にデリゲートをオフにしてから、 2番目の負荷ですが、すべて非同期なので、最初の負荷が終了するまでブロックできません)。 –

25

もしかしたら他の誰かを助けるためにそこにドキュメントの目的のために

[self.webView loadHTMLString:@"" baseURL:nil];

+0

'baseURL'を設定する必要はありません... [self.webView loadHTMLString:@ "" baseURL:nil]; –

+0

@ChrisAllinson私はあなたの提案に従ってそれを簡略化しました – 2cupsOfTech

+0

私は特に私がbaseURLを渡さない限りうまくいかないことが分かりました –

9

回答拡張子を空のHTML文字列をロードします。私は同じ欲求(次のURLをロードする前に明確な内容を)持っていた

をが、 UIWebViewデリゲートがwebviewDidFinishLoad:(UIWebView)webviewメッセージを受信し、それに応答してUIの別の部分を更新するように設定しました。

問題:またはという代理メソッドと呼ばれるコールは、誤認を受けています(つまり、clearが実行されたときに呼び出されますが、実際のコンテンツがある場合のみ呼び出されるようにデリゲートされます)。ロードされた)。

ソリューション:明確なために知られているURLを使用し、webviewDidFinishLoad:は、そのURLが終了したときに行われた呼び出しを無視さ:

- (void) startLoadOfNextURL:(NSURL*)url 
{ 
    // clear: 
    [self.webView loadHTMLString:@"" baseURL:nil]; 

    // Load real next URL 
    NSURLRequest* request = [NSURLRequest requestWithURL:url]; 
    [self.webView loadRequest:request]; 
} 


- (void)webViewDidFinishLoad:(UIWebView *)webView 
{ 
    NSLog(@"WebView finished loading: %@", webView); 
    if ([self.webView.request.URL.absoluteString isEqualToString:@"about:blank"]) { 
     NSLog(@" This is Blank. Ignoring as false event."); 
    } 
    else { 
     NSLog(@" This is a real url"); 
     [self updateUIInSomeWay]; 
    } 
} 

注:これを使用して:

[self.webView loadHTMLString:@"about:blank" baseURL:nil]; 

が実際についての言葉「が発生:空白 "をクリックすると、webviewのコンテンツペインにテキストとして表示されます。

決勝合併症:実際には、一緒に近いので、私の2回の[webview load...]呼び出しで、私が代わりに明確にするための「ロードされた」イベントを、WebViewのは実際には2番目の要求を支持してそれを打ち消したとのためにwebView: didFailLoadWithError:を呼び出すことを見出しました。最初のロード要求。したがって、私はそのイベントに同様のコードを入れていた:

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error 
{ 
    NSLog(@"WebView error on: %@", webView); 
    NSLog(@"Error is: %@", error); 

    NSURL* failingURL = [error.userInfo objectForKey:@"NSErrorFailingURLKey"]; 
    if ([failingURL.absoluteString isEqualToString:@"about:blank"]) { 
     NSLog(@" This is Blank. Ignoring."); 
    } 
    else { 
     NSLog(@" This is a real URL."); 
     [self doSomethingAboutError]; 
    } 
} 
4

スウィフト、Xcodeの7ベータ5

webView.loadRequest(NSURLRequest(URL: NSURL(string: "about:blank")!)) 
+0

ありがとう、私はこれを探していました –

1

スウィフト4.0、XCODE 9つの

webView.loadRequest(URLRequest.init(url: URL.init(string: "about:blank")!)) 
関連する問題