Ios 在NavigationController中推送多个UIViewController

Ios 在NavigationController中推送多个UIViewController,ios,objective-c,uiviewcontroller,uinavigationcontroller,xcode5,Ios,Objective C,Uiviewcontroller,Uinavigationcontroller,Xcode5,我有6个子类UIViewController,它们与带有标识符的推序列连接 它们进入A>B>C>D>E>F。我无法找到一种方法来实现控制器A中的按钮,该按钮将自动将所有控制器堆叠到控制器F并显示控制器F。堆叠应该在UINavigationController实例中完成,而不是通过(void)setViewControllers:(NSArray*)viewControllers animated:(BOOL)animated,因为如果使用setViewControllers方法,则会丢失序列标识

我有6个子类UIViewController,它们与带有标识符的推序列连接


它们进入A>B>C>D>E>F。我无法找到一种方法来实现控制器A中的按钮,该按钮将自动将所有控制器堆叠到控制器F并显示控制器F。堆叠应该在
UINavigationController
实例中完成,而不是通过
(void)setViewControllers:(NSArray*)viewControllers animated:(BOOL)animated
,因为如果使用
setViewControllers
方法,则会丢失序列标识符。泰

您应该能够使用
pushViewController:animated:
,如下所示:

// This method belongs to view controller A class
-(void)pushToF {
    // I am assuming that A is already in the navigation controller
    UINavigationController *nav = self.navigationController;
    UIViewController *b =[self.storyboard instantiateViewControllerWithIdentifier:@"B"];
    [nav pushViewController:b animated:NO];
    UIViewController *c =[self.storyboard instantiateViewControllerWithIdentifier:@"C"];
    [nav pushViewController:c animated:NO];
    ... // And so on, until F
    UIViewController *f =[self.storyboard instantiateViewControllerWithIdentifier:@"F"];
    // You can push the last one with animation, so that end users would see it
    [nav pushViewController:f animated:YES];
}

非常好用,谢谢!还有一个问题。如果我在控制器A上实现了模态视图,并且有一个pushToF方法未隐藏该模态视图,那么代码会是怎样的呢。我知道我必须先以编程方式取消模态视图,然后再执行您编写的内容,但我不知道如何构造。非常感谢您的帮助。@AndrejTrilavov如果
“A”
是模态的,您需要以不同于
self.navigationController
的方式获取导航控制器的引用。您也可以关闭按钮,从
视图调用
pushToF
将消失:动画化:
不幸的是,我在VC上还有其他按钮,因此
视图将消失:动画化:
是不可能的。我知道我必须
自行解除ViewControlleranimated:NO
,并实现您提供给我的代码,但我不知道如何编写它。泰!