如何以编程方式导航导航控制器堆栈?
我只是想知道我怎么可以以编程方式围绕navigationController导航叠加么?如何以编程方式导航导航控制器堆栈?
我熟悉的方法:
[self.navigationController popToRootViewControllerAnimated:YES];
还有:
[self.navigationController popViewControllerAnimated:YES];
,但可以通过程序去任何视图控制器在我的导航控制器?
请参阅我的照片:
http://s18.postimage.org/iq1l4f721/test_xcodeproj_Main_Storyboard_storyboard.jpg?
我知道我可以Segue公司用故事板视图的任何,但我是正确的思维,这将保持(理论上),我会遇到问题推新观点到堆栈,并最终?
谢谢
卡尔。
是的,如果你知道控制器的指数在堆栈或者如果你有对它的引用。 想要这样: [self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex:index] animated:TRUE];
干杯!
使用此代码,浏览到所需的ViewController
NSArray *vcs = self.navigationController.viewControllers;
for (UIViewController *cont in vcs) {
if([cont class] == [YOUR_VIEWCONTROLLER_NAME class])
{
NSLog(@"Class Found");
}
你试过
for (UIViewController * viewController in self.navigationController.viewControllers) {
if ([viewController isKindOfClass:[Number2Class class]]) {
[self.navigationController popToViewController:viewController animated:YES];
}
}
这也适用于后面的意见即时通讯感谢:) – 2012-07-06 16:23:28
非常欢迎:)如果你在这里找到答案的答案,接受答案。我建议:) – janusbalatbat 2012-07-06 16:27:16
我接受了另一个...虽然我可以接受这一个以及看到他们都工作......谢谢 – 2012-07-07 17:09:33
UINavigationController
具有属性NSArray *viewControllers
,持有视图控制器的当前堆栈(历史)。setViewControllers:animated:
- 替换当前由与指定项的导航控制器管理的视图控制器。 (覆盖历史记录)popToViewController:animated:
- 弹出视图控制器,直到指定的视图控制器位于导航堆栈的顶部。 (在这里你将需要通过存在于历史上的一个实例 - 见上)你回#1 ...
嗨Poncha ...是的,我已经读过类ref ......但我是有点困惑...在我的照片(第一篇文章),它看起来像我想去一个视图控制器不能在堆栈中(由于你必须采取的路径)...所以现在我想我需要推动不流行 – 2012-07-06 17:01:04
@CarlT是的,如果视图控制器仍然不存在,你将需要推它,然后它成为堆栈顶部,如果你弹出,你会回来到前一个..顺便说一句,当你从视图控制器关闭导航控制器堆栈它被释放 - 在堆栈上的那些仍然消耗内存 – poncha 2012-07-06 17:10:27
权利我得到亚......是啊这就是我认为...谢谢 – 2012-07-07 17:07:32
或者如果你引用放在您的视图控制器的应用程序委托,那么你甚至不必知道他们的索引。 – 2012-07-05 12:50:12
是的,我提到你必须知道它是索引还是有一个参考。毕竟,该索引正在帮助你获得它的参考。 – George 2012-07-05 12:53:32
哦,我的不好,确实是你做的,不知何故,我完全分开了句子的最后部分:) – 2012-07-05 12:55:14