我有3个导航控制器。每个都有许多视图控制器。
NavigationController (modal Segue)
- > 2 NavigationController (model Segue)
- > 3 NavigationController
现在,您如何从#3 NavigationController返回到我以前的#1 NavigationController?所以我想要
NavigationController (modal Segue)
- > 2 NavigationController (model Segue)
- > 3 NavigationController
(如何???) - > 1 NavigationController
(为了澄清,我不想去一个新的 1 NavigationController
。我想去找之前用过的那个。)
帮助!
答案 0 :(得分:22)
[[self navigationController] popViewControllerAnimated:YES];
答案 1 :(得分:8)
如果你只是想解雇整个 3 NavigationController
,你可以在 3
目标C
[self.navigationController dismissViewControllerAnimated:YES completion:nil]
Swift 3,4
self.navigationController?.dismiss(animated: true)
这会让您回到(model Segue)->
3 NavigationController
之前的状态。
也许你可以在 2 之前用 3 调用它之前以某种方式调用它?
答案 2 :(得分:1)
使用:
[self.**presentingViewController** dismissViewControllerAnimated:YES completion:nil];
而不是:
[self dismissViewControllerAnimated:YES completion:nil];
答案 3 :(得分:1)
在navigationController1
堆栈的视图控制器中,创建一个展开@IBAction
方法:
<强>夫特强>
@IBAction func unwindToMyViewController(_ segue: UIStoryboardSegue)
<强>目标C 强>
- (IBAction)unwindToMyViewController:(UIStoryboardSegue *)segue
在您的故事板中,您可以通过从按钮拖动到退出图标来挂接navigationController3
堆栈中视图控制器中按钮的展开segue ...
,选择上面创建的展开segue。触发时,segue将所有视图控制器展开回包含展开segue的视图控制器。
答案 4 :(得分:0)
此代码将弹出一个导航控制器,其中包含所有视图控制器
// pop root view controller
UIViewController *rootViewController = [self.navigationController viewControllers][0];
[rootViewController dismissViewControllerAnimated:YES completion:nil];
所以你可以这样做:
// pop navigationController3 without animation
UIViewController *rootViewController3 = [navigationController3 viewControllers][0];
[rootViewController3 dismissViewControllerAnimated:NO completion:nil];
// pop navigationController2 with animation
UIViewController *rootViewController2 = [navigationController2 viewControllers][0];
[rootViewController2 dismissViewControllerAnimated:YES completion:nil];
答案 5 :(得分:0)
借助此功能,您可以获得 1导航控件:-
<b> Général menu </ b>