【发布时间】:2017-07-25 15:07:39
【问题描述】:
我有一个主表和详细视图控制器。详细信息 VC 通过 Web 视图显示 URL。
如果使用主/详细设置的内置导航,如果我返回然后按不同的表格单元格,详细视图将更新 Web 视图。无论我使用UIWebView 还是WKWebView,都是如此。
但是,在详细视图中,无需返回表格,我想为用户提供通过同一个 Web 视图查看多个 URL 的选项。我试图通过更改请求的 url 在 viewwillappear 中做到这一点。但是,UIWebView(或 WKWebView)继续显示相同的 URL。我似乎无法摆脱第一个网址。
我已经尝试了各种方法来关闭或停止现有的 web 视图、清除缓存、删除 cookie 等,然后重新加载新的,但仍然看到相同的 url。将不胜感激任何建议。这是我的代码和我尝试过的一些不起作用的东西:
-(void) changeURL: (NSNumber*)param {
NSURL *testurl1=[NSURL URLWithString:@"http://www.apple.com"];
NSURL *testurl2 =[NSURL URLWithString:@"http://www.google.com"];
//if param is 1 {
_urlToLoad = testurl1;}
else {
_urlToLoad = testurl2;}
}
Edit: Method below is updateInterface, not viewWillAppear
-(void) updateInterface {
UIWebView *webView;
NSURLRequest *request=[NSURLRequest requestWithURL:_urlToLoad];
webView = nil;//This blocks the web view from loading at all for some reason I can't understand. Setting wkWebView to nil does not block loading.
[webView stopLoading];//no effect
[webView loadRequest:request];
[[NSURLCache sharedURLCache] removeCachedResponseForRequest:request];
[[NSURLCache sharedURLCache] removeAllCachedResponses];
NSString *myDomain = @"www.google.com";
for(NSHTTPCookie *cookie in [[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) {
if([[cookie domain] isEqualToString:myDomain]) {
[[NSHTTPCookieStorage sharedHTTPCookieStorage] deleteCookie:cookie];
}
}
//wkwebview version
WKWebView *wkwebView;
WKWebViewConfiguration *wkConfig = [[WKWebViewConfiguration alloc] init];
wkwebView = nil;
wkwebView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:wkConfig];
wkwebView.navigationDelegate = self;
[wkwebView loadRequest:request];
[webView addSubview:wkwebView];
CGRect webFrame = [[UIScreen mainScreen] applicationFrame];
webFrame.origin.y = 100.0; // statusbar
webFrame.origin.y -= 100.0; // statusbar 20 px cut from y of frame
webView = [[UIWebView alloc] initWithFrame:webFrame];
}
【问题讨论】:
-
这有点令人困惑...如果您在
viewWillAppear中注释掉 所有 代码,您会得到一个具有 Web 视图的“详细信息 VC”吗它会加载一个 URL?如果是这样,设置 that URL 的代码在哪里? -
是的,我可以在第一次使用 [webView loadRequest:request1];或者 [wkwebView loadRequest:request1]。还有另一种方法未显示指定request2。加载 request1 后,我无法让它加载 request2。卡在 request1 上;
-
我编辑了问题以使其更清晰
-
你在哪里打电话
changeURL? -
响应 UIGestureRecognizer
标签: ios objective-c uiwebview wkwebview