0

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]; 
}

すべてがうまくいくようです。私はなぜなのか理解していない ?

4

1 に答える 1

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]; 
}

あなたが最初に持っていたものには2つの問題があります:

  1. テーブルビューコントローラでwebViewは、初期化される前にプロパティにアクセスしていました。これが何も起こらなかった理由です。
  2. LinkViewControllerの実装の詳細を外の世界に公開しすぎていました。アプリの多くの場所で使用する場合LinkViewControllerは、クラスのすべてのユーザーがURLを作成し、リクエストを作成してから、内部Webビューに読み込みを開始するように指示する必要があります。そのロジックはすべて、内に属しますLinkViewController。これで、クラスの各ユーザーは、単純なURLプロパティを設定することだけを知る必要があります。
于 2013-03-03T00:05:03.073 に答える