1

ナビゲーションコントローラースタックをプログラムでナビゲートするにはどうすればよいのでしょうか?

私はその方法に精通しています:

  [self.navigationController popToRootViewControllerAnimated:YES];

としても:

  [self.navigationController popViewControllerAnimated:YES];

しかし、プログラムでナビゲーション コントローラーの任意のビュー コントローラーに移動できますか?

私の写真を見てください:

http://s18.postimage.org/iq1l4f721/test_xcodeproj_Main_Storyboard_storyboard.jpg ?

ストーリーボードを使用して任意のビューに移行できることはわかっていますが、これにより新しいビューがスタックにプッシュされ続け、最終的に (理論的には) 問題が発生すると考えるのは正しいですか?

ありがとう

カール。

4

4 に答える 4

2

はい、スタック内のコントローラーのインデックスがわかっている場合、またはそれへの参照がある場合。このような: [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:index] animated:TRUE];

乾杯!

于 2012-07-05T12:48:02.110 に答える
1

やってみました

for (UIViewController * viewController in self.navigationController.viewControllers) {
    if ([viewController isKindOfClass:[Number2Class class]]) {
        [self.navigationController popToViewController:viewController animated:YES];

    }
}
于 2012-07-05T12:51:47.477 に答える
0

このコードを使用して、目的のビューコントローラーに移動します

NSArray *vcs = self.navigationController.viewControllers;
    for (UIViewController *cont in vcs) {
        if([cont class] == [YOUR_VIEWCONTROLLER_NAME class])
        {
            NSLog(@"Class Found");
        }
于 2012-07-05T12:50:19.967 に答える
0
  1. UINavigationControllerクラスリファレンスを読みましたか?

  2. UINavigationControllerView Controller の現在のスタック (履歴) を保持するプロパティ があります。NSArray *viewControllers

  3. setViewControllers:animated:- 現在ナビゲーション コントローラーによって管理されているビュー コントローラーを、指定されたアイテムに置き換えます。(履歴を上書き)

  4. popToViewController:animated:- 指定されたビュー コントローラーがナビゲーション スタックの一番上に来るまで、ビュー コントローラーをポップします。(ここでは、履歴に存在するインスタンスを渡す必要があります -上記を参照してください)

  5. 1位に戻って…

于 2012-07-05T12:53:53.430 に答える