我有一个可以在不同网址之间循环的网页视图。当我从一个网址切换到另一个网址时,我希望旧网页在加载下一个网页之前消失。我如何在不重新分配网页视图的情况下做到这一点?
如果我尝试[self.webView loadHTMLString:@"" baseURL:nil];
并在同一个函数中加载我的URL,则之前的网页仍然存在:
[self.webView loadHTMLString:@"" baseURL:nil];
[self.webView loadRequest:[NSURLRequest requestWithURL:self.pageURL]];
EDIT:这显然对你来说还不够清楚。下面的代码没有清除webview,它显示上一页,直到新的页面被加载:
- (void) startLoadOfNextURL:(NSURL*)url
{
// clear:
[self.webView loadHTMLString:@"" baseURL:nil]; //DOESNT WORK
// Load real next URL
NSURLRequest* request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
}
6条答案
按热度按时间ibps3vxo1#
您可以在控制器关闭时编写下面的代码。
sr4lhrrt2#
您可以使其加载空白页
htrmnn0y3#
请改用JavaScript。
xt0899hw4#
下面的代码清除屏幕,然后导航
雨燕
vyswwuz25#
清除webview的旧内容
当你调用
- loadHTMLString:baseURL:
时,它在加载完成之前不会阻塞,一旦它记录了你的请求,它就会返回并在后台加载。因此,您需要等待第一次加载完成,然后再启动新的加载请求。
对于
UIWebView
,您将使用UIWebViewDelegate
的- webViewDidFinishLoad:
。对于WKWebView,您可以使用
WKNavigationDelegate
的- webView:didFinishNavigation:
如果你真的想清除内容而不使用委托方法,另一种方法是使用JavaScript(例如https://stackoverflow.com/a/4241420/3352624)。然后对于UIWebView,你可以调用
- stringByEvaluatingJavaScriptFromString:
。该方法将阻止执行,直到JavaScript执行并返回。对于
WKWebView
,您需要执行类似https://stackoverflow.com/a/30894786/3352624的操作,因为它的- evaluateJavaScript:completionHandler:
不阻塞。让旧内容“消失”
如果你真的只是想让“旧网页消失”,你可以暂时用一个空白的UIView覆盖webview的内容区域,你可以在加载开始时隐藏内容,然后在加载完成后使用上面的委托方法显示内容。
oxcyiej76#
雨燕