2012-02-24 9 views
3

スタックに3番目のビューコントローラを表示するためにUINavigationControllerをどのように初期化できますか?メールアプリケーションのようなもの。アプリを終了しても、起動するとすべてのメールを含むView Controllerが表示され、メールボックスのリストに戻るための「戻る」ボタンが表示されます。iOS - UINavigationControllerを初期化して、プッシュされたViewControllerを表示するにはどうすればいいですか?

ご回答ありがとうございます。

答えて

6

あなたはUINavigationControllersetViewControllers:animated:方法を検討することもできます。

パラメータ

viewControllers

スタックに配置するビューコントローラ。この配列内のコントローラの前後の順序は、ナビゲーションスタック内の新しいコントローラの 下から上の順序を表します。したがって、 配列に最後に追加された項目は、 ナビゲーションスタックの一番上の項目になります。 YESの場合

アニメーション

、トップビューコントローラのプッシュまたはポップをアニメーション化します。いいえの場合は、アニメーションなしでView Controllerを置き換えます。

あなたが更新したり、押したり、明示的に各コントローラ 飛び出ることなく、現在のビュー コントローラスタックを置き換えるために、このメソッドを使用することができます

議論。また、この方法では、 コントローラーのセットを更新することなく、変更をアニメートすることができます。 以前の状態に戻す場合は、起動時に が適切です。

アニメーションが有効になっている場合、このメソッドは、 アイテムの最後のアイテムが既にナビゲーションスタックにあるかどうかに基づいて、実行する遷移タイプを決定します( )。現在ビューコントローラがスタック内にある ですが、一番上のアイテムでない場合は、 ポップトランジションを使用します。一番上のアイテムであれば、 のトランジションは実行されません。ビューコントローラがスタック上にない場合、このメソッド はプッシュ遷移を使用します。 1つのトランジションのみが実行されますが、トランジションが終了する がある場合は、スタックの内容全体が新しいビューコントローラに置き換えられます( )。たとえば、コントローラーA、 B、およびCがスタック上にあり、コントローラーD、A、およびBを設定する場合、この メソッドはポップトランジションを使用し、結果のスタックにはコントローラーD、A、およびBの が含まれます。

のiOS 3.0で利用可能

以降可用性

UINavigationController Class Reference

1

使用popToViewController。

navigationController.viewControllers = [NSArray arrayWithObjects:firstVC, secondVC, thirdVC, nil]; 
[navigationController popToViewController:thirdVC animated:NO]; 

注:アニメーションがNOに設定されていることを確認してください。

2

あなたのアプリの状態がある場合はUserDefaultsに保存する必要があります。これは、アプリケーションデリゲートメソッド- (void)applicationWillTerminate:(UIApplication *)applicationを使用して行うことができます。

その後、アプリケーションが再度起動されると、その情報がUserDefaultsから取得され、ビューコントローラ階層内に保持するビューコントローラが初期化されます。次に、方法:setViewControllers:animated:を使用してUINavigationControllerに追加します。

0

通常のようにナビゲーションコントローラを初期化しますが、表示する前に2番目と3番目のView Controllerをプッシュします。だからあなたがあなたのアプリケーションデリゲートのアプリケーションでこれをやっているなら:didFinishLaunchingWithOptions:

UIViewController *firstController = [[[FirstViewCon alloc] initWithNibName:@"MyFirstViewCon" bundle:nil] autorelease]; 
UIViewController *secondController = [[[SecondViewCon alloc] initWithNibName:@"SecondViewCon" bundle:nil] autorelease]; 
UIViewController *thirdController = [[[ThirdViewCon alloc] initWithNibName:@"ThirdViewCon" bundle:nil] autorelease]; 

UINavigationController *theNavCon = [[[UINavigationController alloc] initWithRootViewController:firstController] autorelease]; 

[theNavCon pushViewController:secondController animated:NO]; 
[theNavCon pushViewController:thirdController animated:NO]; 

self.window.rootViewController = theNavCon; 
関連する問題