1

我有一个导航控制器(带有 Storyboard 和 ARC 的 XCode4),其中一个 segue 连接到每个单独的 ViewController(其中 7 个)。通常,我点击导航控制器中的一行,将我带到正确的场景。但是,有时我想使用 segues 从场景“A”到场景“C”,然后从“C”到“B”,这还没有通过导航控制器放置在堆栈上。

这是否可能(从场景“C”到场景“B”)?

更新:这是将控制器放入堆栈的代码:

EnterDataViewController *edvc = [[EnterDataViewController alloc]init];

NSMutableArray *ma = self.navigationController.viewControllers;
[ma insertObject:edvc atIndex:1];
self.navigationController.viewControllers = ma;
[self.navigationController popToViewController:[self.navigationController.viewControllers objectAtIndex: 1] animated:YES];
4

3 回答 3

3

将新的视图控制器插入到层次结构顶部的下方,并关闭动画。然后,弹出。:)

于 2012-04-26T20:17:10.217 回答
1

UINavigationController's viewControllers堆栈是存储在属性中的数组。使用它来创建一个新的(可变)数组,您可以在其中insertObject:atIndex:1将其分配回UINavigationController.viewControllers.

于 2012-04-26T20:38:22.987 回答
0

将新控制器插入 self.navigationController.viewControllers 并不总是按预期工作,因此我建议从数组中获取您需要的控制器,从头开始构建一个新数组,然后将该数组分配给导航控制器。

UIViewController *mainScreenController = [[self.navigationController viewControllers]objectAtIndex:0];  
SecondScreenController *secondScreenController = [[SecondScreenController alloc]init];     
NSMutableArray *controllers = [[NSMutableArray alloc]initWithObjects:mainScreenController, secondScreenController, nil];    
[self.navigationController setViewControllers:controllers animated:YES];
于 2012-07-14T17:57:42.023 回答