2012-01-18 38 views
4

我在我的iPhone應用程序中遇到了這個問題:我有一個第一次加載HTML字符串的webView。在用戶點擊鏈接並加載請求的頁面後,當我調用方法[UIWebView goBack];時,webView將不會返回。我想webView不會緩存HTML字符串。有沒有什麼辦法可以讓web瀏覽器緩存我的HTML字符串,而不必將它保存在NSString中呢?在iOS中加載HTML後UIWebView不會回頭

回答

5

您可以使用canGoBack屬性,如果無法返回,請使用原始html重新加載UIWebView。如果用戶使用鏈接向前導航,則canGoBack屬性將返回YES,並且可以在UIWebView上啓動goBack。 _htmlString是UIWebView使用HTML字符串進行初始化時設置的成員變量。 -rrh

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

你如何設置htmlString? – Edu 2018-02-08 21:35:10

0

這聽起來像一個您的webview變量沒有正確鏈接到您正在使用的webview實例。在這個調用中斷點並檢查你的webView變量是否爲'nil'。

如果是,請確保您的XIB文件中的webView鏈接到Interface Builder中的IBOutlet變量。這是一個常見的錯誤,我第一次設計一個新頁面時往往會忘記它。

本教程將介紹如何使用界面構建器構建界面,我相信您對這些界面非常熟悉,但對於那些不適用的界面構建者來說也是如此。它有一些很好的截圖,幫助說明我通過「鏈接」,比我更好的鍵入「點擊小+圖標,然後拖動到UI元素的小啄」的意思:)

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

編輯

我能想到的唯一的另一件事是,你通過重新初始化它的某處(它已經被XIB初始化)覆蓋了你的webView變量,因此你在不存在的webview上調用goBack屏幕上。

+0

的loadRequest哦,如果你想知道爲什麼,當你調用一個IOS不踢了一個臭'nil'方法,這是因爲nil不是NULL,並且在調用時返回'nil' – Robotnik 2012-01-18 03:55:31

+0

感謝您的回答!我驗證了我的IBOutlets是否正常。它可能是什麼? – 2012-01-18 04:41:03

0

嘗試從文件的URL創建的NSURLRequest和使用,而不是loadhtmlString

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