2011-10-21 14 views
1

iOS開発の学習を始めたばかりです。以下に示すように、UINavigationControllerを開始する唯一の目的でViewControllerクラスを作成するサンプルコードを見てきました。ちょうどスニペット2のように、AppDelegateでUINavigationControllerを作成し、self.window.rootViewControllerに割り当てる対、その利点は何ですか:AppDelegateでインスタンス化されたUINavigationController

snippet1:

MyViewController *mvc = [[MyViewController alloc] init]; 
UINavigationController *navController = [[[UINavigationController alloc] initWithRootViewController:mvc] autorelease]; 
self.window.rootViewController = navController; 

snippet2:

UINavigationController *navController = [[UINavigationController alloc] init]; 
self.window.rootViewController = navController; 

答えて

2

ナビゲーションビューコントローラは、他のビューコントローラを管理し、アプリケーションをナビゲートするためのスタック状の構造体のインタフェースを提供します。管理するView Controllerを持たないナビゲーションコントローラを作成するだけであれば、何も実行したり表示したりすることはありません。それはエラー(私は特にそれを試していない)を引き起こす可能性があります。

+0

私はsnippet1のUINavigationControllerによって管理されるデフォルトのView Controllerを効果的に設定していますか?もしそうなら、私は別のビューに切り替えるには、私はMyViewController.mの中でそれを管理するのですか?それとも、私がnavControllerを作成したAppDelegate didFinishWithLaunchOptionsの中で管理しますか? – David

+0

あなたは私にそれを打つ。ナビゲーションビューコントローラには独自のルートビューコントローラがあり、ルートビューコントローラを設定しないとメモリアクセスエラーが発生する可能性があります。 –

+0

@Mr。 UIWindowにはルートビューコントローラのプロパティがあり、通常はUIWindowのインスタンスが1つしかありません(少なくとも私の学習のこの時点では)、UINavigationControllerは基本的にUIWindowを引き継ぎますか?したがって、UINavigationControllerインスタンスにビューをプッシュしてポップし、UIWindowに直接ビューを追加/削除することについて心配することはありませんか? – David

関連する問題