我在一个选项卡中有一个UIWebView加载到viewDidLoad中,但是如果用户点击其他选项卡,加载将被中断并且将调用 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
,但我想知道如果用户再次点击上一个选项卡,如何加载webView,以及如果它没有加载它会重新加载它,像这样
-(void)viewWillAppear:(BOOL)animated
{
if (!webView)
{
NSURL *url = [NSURL URLWithString:@"url"];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[webView loadRequest:request];
}
}
但它不起作用,请帮忙吗?
4 回答
UIWebview具有webViewDidFinishLoad委托方法 . 设置一个bool来表明这已经完成 .
如果你还没有工作,这是一个有效的例子 . 它还会在无法加载时显示警报,并且警报仅显示一次 .
Headers :
执行:
我希望有所帮助 .
确实,原始问题是多年前发布的 . 最近我必须找到一个可靠的解决方案来解决这个问题 .
这是适合我的解决方案:
用WKWebWiew替换了UIWebView .
在处理'didFinishNavigation'委托方法时添加了'evaluateJavaScript'代码 .
完整的代码是:
对于具有多个框架的页面,还应使用UIWebView.loading属性 .
Apple的doc:@property(非原子,readonly,getter = isLoading)BOOL loading一个布尔值,指示接收器是否完成加载内容 .
如果是,则接收方仍在加载内容;否则,不 .
在iOS6(beta 4)中,Apple似乎也解决了这个属性的一些问题 . http://code-gotcha.blogspot.fi/2012/08/uiwebviewloading-in-ios-6-fixed.html