UIWebView无法加载新的URL。

4
我有一个UITableView,它显示所选择的部门的人名。当您在TableView中选择一个人时,它会加载一个详细页面,其中包含所有联系信息的标签;然后在底部,它会在较小的UIWebView中加载他们的网站。 如果您选择一个人,查看他们的信息,然后返回并选择同一部门中的另一个人,则UIWebView不会重新加载新选择的人的网站,而是仍停留在最初选择的那个人的网站上。 我整晚都在尝试让它工作;我相信这是很简单的事情。 我已经尝试将webView设置为nil,并在viewDidDisappear和viewWillDisappear(在查看完人员列表后调用的函数)中释放它。 我将其设置为UINavigationController。 所选人员详细信息的标签全部更新为所选人员,但是UIWebView就是不想重新加载。任何帮助都会感激!
-(void)viewWillAppear:(BOOL)animated
{
    NSLog(@"willAppear");
    [[self navigationItem] setTitle:[selectedPerson professorLName]];

url = [[NSURL alloc] initWithString:[selectedPerson departmentWebsite]];
NSLog(@"%@", url);
req = [[NSURLRequest alloc] initWithURL:url];
[webView loadRequest:req];
webView.scalesPageToFit = YES;

}

- (void)viewWillDisappear:(BOOL)animated
{
    NSLog(@"willDis");
    [super viewWillDisappear:animated];
    [webView release];
    webView = nil;
url = nil;
}

- (void)viewDidDisappear:(BOOL)animated 
{
    NSLog(@"didDisappear");
    [super viewDidDisappear:animated];
    [webView release];
    webView = nil;
    url = nil;
}

你好像忘记在问题中包含代码了。 - Matthias Bauch
2个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
2

请在viewWillDisappearviewDidDisappear中删除您的代码,并尝试以下操作:

-(void) viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    [self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:selectedPerson.departmentWebsite]]];
}

请记住,如果您将此代码放在-viewWillAppear中,当您切换标签(如果有的话)或应用程序回到前台时,页面将重新加载。因此,我更喜欢在推出详细视图控制器时加载URL:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
        SimpleWebViewController* detailViewController = [[SimpleWebViewController alloc] initWithNibName:@"SimpleWebView" bundle:nil];
        [self.navigationController pushViewController:detailViewController animated:YES];
        [detailViewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:url]]];
        [detailViewController release];
    }
}
希望这能帮到你!

我尝试了你所做的事情,但页面仍然没有重新加载。我意识到页面不会重新加载的时候有两个实例。当您选择一个部门然后选择一个人时,详细视图会被推送。对于每个人,webView都会重新加载。您还可以按名称搜索,因此如果您搜索Ryan,会出现4个名称;只有在此处选择一个人,返回并选择搜索结果中的另一个人时,webView才不会重新加载。很难解释,但希望您明白我的意思。 - RyanG
我通过添加一个按钮,在单独的UIWebView中加载部门网站,而不是在详细视图中加载较小的UIWebView来解决了这些问题。 - RyanG

0

将 URL 输出到您的控制台。听起来您可能正在传递相同的 URL。
但是,Fluchtpunkt 是正确的,让我们看看您的代码。


正如您所看到的,我将URL输出到控制台,并打印出所选人员的正确URL,但未加载它,这就是我感到困惑的原因,请求没有每次重新加载。 - RyanG
WebView是否会重新加载相同的页面,还是保持现有内容不变? - Jason Bugs Adams
它仍然保持着先前的静态内容。我已经尝试在几个地方强制重新加载,但是我无法实现。 - RyanG

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,