我在我的iPhone应用程序中遇到此问题:我有一个首先加载HTML字符串的webView。在用户单击链接并加载请求的页面后,当我调用方法[UIWebView goBack];
时,webView将不会返回。我认为webView不会缓存HTML字符串。有没有办法让webView缓存我的HTML字符串,而不必自己将其保存在NSString中?
答案 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元素上”:)
修改强>
我能想到的唯一另一件事是你通过在某处重新初始化它来覆盖你的webView变量(它已经由XIB初始化),因此你在webview上调用goBack屏幕。