UIWebView不会加载新的URL

时间:2011-03-10 07:33:42

标签: iphone ios uitableview uiwebview uinavigationcontroller

我有一个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;
}

2 个答案:

答案 0 :(得分: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];
    }
}

希望有所帮助!

答案 1 :(得分:0)

将网址吐出到您的控制台。听起来你可能正在传递相同的网址 但是,是的,fluchtpunkt是对的,让我们看看你的代码。