2012-01-18 42 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];