2012-01-18 11 views
4

私のiPhoneアプリケーションでこの問題が発生しています。最初にHTML文字列が読み込まれたWebViewがあります。ユーザーがリンクをクリックして、要求されたページをロードした後、メソッドを呼び出すとwebViewは戻りません。[UIWebView goBack]; webViewがHTML文字列をキャッシュしないとします。 webViewを自分でNSStringに保存せずにHTML文字列をキャッシュできるようにする方法はありますか?iOSでHTMLを読み込んだ後にUIWebViewが戻ることはありません

答えて

5

あなたはcanGoBackプロパティを使用することができますし、戻って行くことができない場合は、元のHTMLでのUIWebViewをリロードします。ユーザーがリンクを使用して前方にナビゲートした場合、canGoBackプロパティがYESとGOBACKを返しますのUIWebViewで開始することができます。 _htmlStringは、HTML文字列を使用してUIWebViewを初期化するときに設定されるメンバー変数です。

- (void)goBack 
{ 
    if (_htmlString && ![_browserWebView canGoBack]) { 
     [_browserWebView loadHTMLString:_htmlString baseURL:nil]; 
     return; 
    } 
    [_browserWebView goBack]; 
} 
+0

どのようにhtmlStringを設定しますか? – Edu

0

これは、あなたのwebview変数が、使用しているwebviewインスタンスに正しくリンクされていないようです。ブレークポイントを設定し、webView変数が 'nil'であるかどうかを確認します。

この場合、XIBファイルのwebViewがInterface BuilderのIBOutlet変数にリンクされていることを確認してください。これはよくある間違いで、新しいページを初めて設計するときに忘れがちなものです。

このチュートリアルでは、私はあなたとfamilliarしていると確信しているインタフェースビルダを使用して、インターフェイスを構築する方法ではなく、それはまた便利だそうでないもののためにLOTをカバーしています。それは私が私よりも優れては、「少し+アイコンをクリックして、UI要素への上に少しブツをドラッグ」と入力し「リンク」によって何を意味するか説明するのに役立ついくつかの良いスクリーンショットを持っている:)

http://www.icodeblog.com/2008/07/30/iphone-programming-tutorial-connecting-code-to-an-interface-builder-view/

EDIT

私が考えることができる唯一のもう一つのことは、どこかに再初期化してwebView変数を上書きしていることです(既にXIBによって初期化されています)。したがって、存在しないwebviewでgoBackを呼び出しています画面上。

+0

ああ、あなたが呼び出すときにIOSが悪臭を蹴り上げるいないなぜあなたは迷っているならば「nil」の上の方法は、ゼロがNULLではないので、それはだ、とだけ答えを – Robotnik

+0

感謝を起動したときに「nil」で返します!私は検証し、私のIBOutletsは問題ありません。それは何でしょうか? –

0

-rrhファイルのURLからNSURLRequestを作成し、loadRequestを使用してみてください代わりにloadhtmlString

NSURL *htmlFileUrl = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"]; 
NSURLRequest *localRequest = [NSURLRequest requestWithURL:htmlFileUrl]; 
self.webView.delegate = self; 
[self.webView loadRequest:localRequest]; 
関連する問題