4

有没有办法将视图控制器推送到导航控制器而不堆叠它?

想要的行为(堆栈表示):

[VC1[VC2]] -> 从 VC2 推送 VC3 -> [VC1[VC3]]

4

2 回答 2

7

是的,只需像这样弹出另一个(没有动画这个):

[navController popViewControllerAnimated:NO]
[navController pushViewController:VC3 animated:YES]

或者选择更通用的选项 2:替换 viewControllers 属性:

NSArray *newControllers = @[VC1, VC3];
[navController setViewControllers:newControllers animated:YES];

或者...

NSArray *newControllers = @[navController.viewControllers[0], VC3];
[navController setViewControllers:newControllers animated:YES];
于 2013-09-02T21:38:04.257 回答
1

我会使用 UINavigationController 的方法:

- (void)setViewControllers:(NSArray *)viewControllers animated:(BOOL)animated

这样你就可以这样做:

UINavigationController *navigationController = [self navigationController];
[navigationController setViewControllers:@[navigationController.viewControllers[0], VC3] animated:YES];

这将为您提供新视图控制器 (VC3) 的推送动画。

于 2013-09-02T21:49:43.983 回答