2012-04-26 24 views
1

私はObjective-Cで新しく、いくつかのViewを持つアプリケーションで作業を開始します。私はXIBファイルなしでプログラムで100%それらを作成したいと思います。自分の画面にViewControllersクラスを作成する必要があることを理解していますが、そのクラスを使用してナビゲーションを管理する方法について質問したいと思います。 ViewControllertableViewが含まれているとします。そして、私は次の画面を作成したい。だから私はtableViewControllerクラスのrow次の画面について新しいビューをプログラムで作成して管理する

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

しかし、何を呼び出すことを理解できますか?私はまだそれを持っていない。 「準備完了」ViewControllerクラスを作成する必要がありますか?この場合のナビゲーションの処理方法は?あなたのケースでは

答えて

3

セルが選択されている場合、あなたはなります

  • はプッシュ
  • 、UINavigationControllerスタック上のこの新しいインスタンスをあなたの次のビューコントローラの新しいインスタンスを作成します。

最初に、最初のビューコントローラ(テーブルビューを持つもの)がUINavigationControllerに含まれていることを確認する必要があります。

// AppDelegate, in applicationDidFinishLanching: 

UIViewController *firstViewController = [[[MyCustomTableViewController alloc] 
              initWithNibName:nil bundle:nil] 
             autorelease]; 
UINavigationController *navigationController = [[[UINavigationController alloc] 
               initWithRootViewController:firstViewController] 
               autorelease]; 

[self.window setRootViewController:navigationController]; 

あなたのテーブルビューのセルが選択されている場合次に、あなたが書くことができます。

- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    UIViewController *nextViewController = [[[MyNextViewController alloc] 
              initWithNibName:nil bundle:nil] 
              autorelease]; 

    [self.navigationController pushViewController:nextViewController 
             animated:YES] 

} 
+0

おかげで、これは便利です。 – Kuba

+0

そして1つの質問。私は複数のViewControllersを作ったり、すでに持っている「再読み込み」する必要がありますか?あるいは、このクラスの新しいインスタンスを作成することができますか? – Kuba

+1

これは本当にあなたが始める必要があることの始まりであり、素晴らしい説明です。もう一つのこと:UINavigationControllerのクラスリファレンスには、良い紹介が含まれています:http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UINavigationController_Class/Reference/Referencehtml –

2

あなたはアップルからのドキュメントをお読みください:View Controllers Programming Guide

基本的に、あなたがする必要がありますナビゲーションコントローラ(コンテンツビューコントローラ)にナビゲーションコントローラ(コンテナビューコントローラ)のテーブルビューコントローラを埋め込みます。

次に-tableViewに:didSelectRowAtIndexPath :,新しいコンテンツビューコントローラをインスタンス化し、メッセージのこの種のナビゲーションコントローラを介して、あなたの現在のテーブルビューコントローラにプッシュ:

[[self navigationController] pushViewController:<#myNextViewController#> animated:YES]; 

アップルのコードサンプルも必ず読んでください(いくつかはかなり薄いので分かりやすいです)。