1

我只是想知道如何以编程方式在 navigationController 堆栈中导航?

我熟悉的方法:

  [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. UINavigationController属性 NSArray *viewControllers,它保存当前的视图控制器堆栈(历史)。

  3. setViewControllers:animated:- 用指定的项目替换当前由导航控制器管理的视图控制器。(覆盖历史)

  4. popToViewController:animated:- 弹出视图控制器,直到指定的视图控制器位于导航堆栈的顶部。(在这里您需要传递一个存在于历史记录中的实例 -见上文

  5. 回到#1...

于 2012-07-05T12:53:53.430 回答