我在我的iPhone应用程序中遇到了这个问题:我有一个第一次加载HTML字符串的webView。在用户点击链接并加载请求的页面后,当我调用方法[UIWebView goBack];
时,webView将不会返回。我想webView不会缓存HTML字符串。有没有什么办法可以让web浏览器缓存我的HTML字符串,而不必将它保存在NSString中呢?在iOS中加载HTML后UIWebView不会回头
回答
您可以使用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];
}
这听起来像一个您的webview变量没有正确链接到您正在使用的webview实例。在这个调用中断点并检查你的webView变量是否为'nil'。
如果是,请确保您的XIB文件中的webView链接到Interface Builder中的IBOutlet变量。这是一个常见的错误,我第一次设计一个新页面时往往会忘记它。
本教程将介绍如何使用界面构建器构建界面,我相信您对这些界面非常熟悉,但对于那些不适用的界面构建者来说也是如此。它有一些很好的截图,帮助说明我通过“链接”,比我更好的键入“点击小+图标,然后拖动到UI元素的小啄”的意思:)
编辑
我能想到的唯一的另一件事是,你通过重新初始化它的某处(它已经被XIB初始化)覆盖了你的webView变量,因此你在不存在的webview上调用goBack屏幕上。
的loadRequest哦,如果你想知道为什么,当你调用一个IOS不踢了一个臭'nil'方法,这是因为nil不是NULL,并且在调用时返回'nil' – Robotnik 2012-01-18 03:55:31
感谢您的回答!我验证了我的IBOutlets是否正常。它可能是什么? – 2012-01-18 04:41:03
尝试从文件的URL创建的NSURLRequest和使用,而不是loadhtmlString
NSURL *htmlFileUrl = [[NSBundle mainBundle] URLForResource:@"index" withExtension:@"html"];
NSURLRequest *localRequest = [NSURLRequest requestWithURL:htmlFileUrl];
self.webView.delegate = self;
[self.webView loadRequest:localRequest];
你如何设置htmlString? – Edu 2018-02-08 21:35:10