在iOS中加载HTML后,UIWebView不会返回

时间:2012-01-18 03:26:28

标签: ios caching uiwebview back

我在我的iPhone应用程序中遇到此问题:我有一个首先加载HTML字符串的webView。在用户单击链接并加载请求的页面后,当我调用方法[UIWebView goBack];时,webView将不会返回。我认为webView不会缓存HTML字符串。有没有办法让webView缓存我的HTML字符串,而不必自己将其保存在NSString中?

3 个答案:

答案 0 :(得分:6)

您可以使用canGoBack属性,如果无法返回,请使用原始html重新加载UIWebView。如果用户使用链接向前导航,则canGoBack属性将返回YES,并且可以在UIWebView上启动goBack。 _htmlString是使用HTML字符串初始化UIWebView时设置的成员变量。 -rrh

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

答案 1 :(得分:1)

尝试从文件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];

答案 2 :(得分: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/

修改

我能想到的唯一另一件事是你通过在某处重新初始化它来覆盖你的webView变量(它已经由XIB初始化),因此你在webview上调用goBack屏幕。