2012-07-05 134 views
1

我只是想知道我怎么可以以编程方式围绕navigationController导航叠加么?如何以编程方式导航导航控制器堆栈?

我熟悉的方法:

[self.navigationController popToRootViewControllerAnimated:YES]; 

还有:

[self.navigationController popViewControllerAnimated:YES]; 

,但可以通过程序去任何视图控制器在我的导航控制器?

请参阅我的照片:

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

我知道我可以Segue公司用故事板视图的任何,但我是正确的思维,这将保持(理论上),我会遇到问题推新观点到堆栈,并最终?

谢谢

卡尔。

回答

2

是的,如果你知道控制器的指数在堆栈或者如果你有对它的引用。 想要这样: [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:index] animated:TRUE];

干杯!

+0

或者如果你引用放在您的视图控制器的应用程序委托,那么你甚至不必知道他们的索引。 – 2012-07-05 12:50:12

+0

是的,我提到你必须知道它是索引还是有一个参考。毕竟,该索引正在帮助你获得它的参考。 – George 2012-07-05 12:53:32

+0

哦,我的不好,确实是你做的,不知何故,我完全分开了句子的最后部分:) – 2012-07-05 12:55:14

0

使用此代码,浏览到所需的ViewController

NSArray *vcs = self.navigationController.viewControllers; 
    for (UIViewController *cont in vcs) { 
     if([cont class] == [YOUR_VIEWCONTROLLER_NAME class]) 
     { 
      NSLog(@"Class Found"); 
     } 
1

你试过

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

    } 
} 
+0

这也适用于后面的意见即时通讯感谢:) – 2012-07-06 16:23:28

+0

非常欢迎:)如果你在这里找到答案的答案,接受答案。我建议:) – janusbalatbat 2012-07-06 16:27:16

+0

我接受了另一个...虽然我可以接受这一个以及看到他们都工作......谢谢 – 2012-07-07 17:09:33

0
  1. 你读过UINavigationController Class reference

  2. UINavigationController具有属性NSArray *viewControllers,持有视图控制器的当前堆栈(历史)。

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

  4. popToViewController:animated: - 弹出视图控制器,直到指定的视图控制器位于导航堆栈的顶部。 (在这里你将需要通过存在于历史上的一个实例 - 见上

  5. 你回#1 ...

+0

嗨Poncha ...是的,我已经读过类ref ......但我是有点困惑...在我的照片(第一篇文章),它看起来像我想去一个视图控制器不能在堆栈中(由于你必须采取的路径)...所以现在我想我需要推动不流行 – 2012-07-06 17:01:04

+0

@CarlT是的,如果视图控制器仍然不存在,你将需要推它,然后它成为堆栈顶部,如果你弹出,你会回来到前一个..顺便说一句,当你从视图控制器关闭导航控制器堆栈它被释放 - 在堆栈上的那些仍然消耗内存 – poncha 2012-07-06 17:10:27

+0

权利我得到亚......是啊这就是我认为...谢谢 – 2012-07-07 17:07:32

相关问题