无法在另一个视图控制器的WebView中显示URL

时间:2013-03-02 23:09:02

标签: ios uiwebview

我有一个需要打开Web视图的UITableViewController。

在我的功能中,我有:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{

                LinkViewController *linkViewController = [[LinkViewController alloc] initWithNibName:@"LinkViewController_iPhone" bundle:nil];

                [linkViewController.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:@"http://www.google.com"]]];

                [self.navigationController pushViewController:linkViewController animated:YES];

}

我已连接所有商店,但没有收到任何警告,但我看不到页面拉起来。

但是,如果我进入实际的LinkViewController文件并执行以下操作:

- (void)viewDidLoad
{
    [super viewDidLoad];

        NSString *urlAddress = @"http://www.google.com";

    //Create a URL object.
    NSURL *url = [NSURL URLWithString:urlAddress];

    //URL Requst Object
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:url];

    //Load the request in the UIWebView.
    [self.webView loadRequest:requestObj]; 
}
一切似乎都很好。我不明白为什么?

1 个答案:

答案 0 :(得分:2)

您应该向URL添加LinkViewController媒体资源。然后在表视图控制器中执行以下操作:

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    LinkViewController *linkViewController = [[LinkViewController alloc] initWithNibName:@"LinkViewController_iPhone" bundle:nil];             
    linkViewController.URL = [NSURL URLWithString:@"http://www.google.com"];

    [self.navigationController pushViewController:linkViewController animated:YES];
}

现在在您的LinkViewController中执行:

- (void)viewDidLoad {
    [super viewDidLoad];

    //URL Requst Object
    NSURLRequest *requestObj = [NSURLRequest requestWithURL:self.URL];

    //Load the request in the UIWebView.
    [self.webView loadRequest:requestObj]; 
}

你原来有两个问题:

  1. 在表视图控制器中,您在初始化之前访问了webView属性。这就是为什么没有发生的原因。
  2. 您向外界揭示了LinkViewController的过多实施细节。如果您在应用中的许多地方使用LinkViewController,则要求该类的每个用户都知道创建URL,创建请求,然后告诉内部Web视图开始加载。所有这些逻辑都属于LinkViewController。现在,该类的每个用户只需知道设置一个简单的URL属性。