スタックに3番目のビューコントローラを表示するためにUINavigationControllerをどのように初期化できますか?メールアプリケーションのようなもの。アプリを終了しても、起動するとすべてのメールを含むView Controllerが表示され、メールボックスのリストに戻るための「戻る」ボタンが表示されます。iOS - UINavigationControllerを初期化して、プッシュされたViewControllerを表示するにはどうすればいいですか?
ご回答ありがとうございます。
スタックに3番目のビューコントローラを表示するためにUINavigationControllerをどのように初期化できますか?メールアプリケーションのようなもの。アプリを終了しても、起動するとすべてのメールを含むView Controllerが表示され、メールボックスのリストに戻るための「戻る」ボタンが表示されます。iOS - UINavigationControllerを初期化して、プッシュされたViewControllerを表示するにはどうすればいいですか?
ご回答ありがとうございます。
あなたはUINavigationController
のsetViewControllers:animated:
方法を検討することもできます。
パラメータ
viewControllers
スタックに配置するビューコントローラ。この配列内のコントローラの前後の順序は、ナビゲーションスタック内の新しいコントローラの 下から上の順序を表します。したがって、 配列に最後に追加された項目は、 ナビゲーションスタックの一番上の項目になります。 YESの場合
アニメーション
、トップビューコントローラのプッシュまたはポップをアニメーション化します。いいえの場合は、アニメーションなしでView Controllerを置き換えます。
あなたが更新したり、押したり、明示的に各コントローラ 飛び出ることなく、現在のビュー コントローラスタックを置き換えるために、このメソッドを使用することができます
議論。また、この方法では、 コントローラーのセットを更新することなく、変更をアニメートすることができます。 以前の状態に戻す場合は、起動時に が適切です。
アニメーションが有効になっている場合、このメソッドは、 アイテムの最後のアイテムが既にナビゲーションスタックにあるかどうかに基づいて、実行する遷移タイプを決定します( )。現在ビューコントローラがスタック内にある ですが、一番上のアイテムでない場合は、 ポップトランジションを使用します。一番上のアイテムであれば、 のトランジションは実行されません。ビューコントローラがスタック上にない場合、このメソッド はプッシュ遷移を使用します。 1つのトランジションのみが実行されますが、トランジションが終了する がある場合は、スタックの内容全体が新しいビューコントローラに置き換えられます( )。たとえば、コントローラーA、 B、およびCがスタック上にあり、コントローラーD、A、およびBを設定する場合、この メソッドはポップトランジションを使用し、結果のスタックにはコントローラーD、A、およびBの が含まれます。
のiOS 3.0で利用可能
以降可用性。
使用popToViewController。
navigationController.viewControllers = [NSArray arrayWithObjects:firstVC, secondVC, thirdVC, nil];
[navigationController popToViewController:thirdVC animated:NO];
注:アニメーションがNOに設定されていることを確認してください。
あなたのアプリの状態がある場合はUserDefaults
に保存する必要があります。これは、アプリケーションデリゲートメソッド- (void)applicationWillTerminate:(UIApplication *)application
を使用して行うことができます。
その後、アプリケーションが再度起動されると、その情報がUserDefaults
から取得され、ビューコントローラ階層内に保持するビューコントローラが初期化されます。次に、方法:setViewControllers:animated:
を使用してUINavigationController
に追加します。
通常のようにナビゲーションコントローラを初期化しますが、表示する前に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;