2009-08-30 4 views
0

私はiPhone開発の初心者ですが、この概念を一般的に理解するのに役立つかもしれない質問があります。UIViewControllerとUIWebView

基本的に、私はUIViewControllerを持っていて、たくさんのものでビューをロードしています。今は、ユーザーがボタンをクリックして別のビューをロードするときに、WebViewのようになります。さて、元のビューでどのボタンが押されたかに応じてweviewに別のURLをロードします。

どうすればいいですか?基本的に私の頭の中で私のようなので、ボタンが押されたときに、私はビューをロードし、入れ替えることができると思った:

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

    NSString *selectedLink = [valuesForSection objectAtIndex:row]; 

    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. 
    [webView loadRequest:requestObj]; 

    [self.view removeFromSuperview]; 
    [self.view insertSubview:webView atIndex:0]; 
}

が、これはそれを行うための正しい方法ですか?または、これをどうやってやるの?

答えて

1

それは私がそれについて行く方法だろう、はい。単一のUIWebViewを作成し、選択されたセルに応じて、loadRequest:を使用してビューにNSURLRequestをロードします。これには、各セルと非同期の別々のWebビューを構築する必要がないという利点があります。

しかし、セルがクリックされたときに必ずスーパービューからself.viewを削除するとは限りません。むしろ、モーダルビューコントローラ(presentModalViewController:animated:)をビューとしてWebビューでポップアップするか、新しいコントローラをナビゲーションコントローラスタック(pushViewController:animated:)にプッシュします。これはよりスムーズな移行であり、ユーザーにとってより見栄えがよくなります。

(コメントへの回答):はい、ビューを交換するだけではなく、別のコントローラーを使用する方がよいでしょう。 removeFromSuperviewとを実行すると、両方のビューが同じコントローラ内に保持されますが、その結果、コード管理が難しくなり(1つのコントローラで2つのビューが処理されます)、ユーザーエクスペリエンスが低下します(移行はありません。ナビゲーションコントローラプッシュ)。適切にプッシュを行うために

、あなたがすべき:

  • あなたがする必要があるときに設定され、そのビューでのUIViewControllerの新しいインスタンスを作成し、既存のビューコントローラ
  • ためのナビゲーションコントローラを構築あなたが作成して呼び出すことで、あなたのHTML
  • プッシュ古いビューコントローラからナビゲーションコントローラのスタックに新しいビューコントローラとロードのUIWebView:
[self.navigationController pushViewController:newViewController animated:YES];
+0

pushviewcontrollerの実装方法を教えてください。しかし、あなたが言っていることを言っているのではなく、別のコントローラを持っている方が良いでしょう? – Doz

関連する問題