closures导航控制器中的推送视图

我有一个导航控制器与视图控制器显示一个button。 该button通过push segue链接到另一个View Controller,后者会自动添加一个带有后退button的顶部导航栏。 这一切工作正常。 按下后退button滑出第二个视图并返回到第一个视图。

我在第二个视图控制器上有一个button,当按下时运行一些代码和委托调用回第一个视图控制器。 再次这工作正常。

现在我只需要closures第二个从代码推视图,就好像后退button被按下。 我已经尝试使用dismissModalViewCcontrollerAnimated和dismissViewControllerAnimated,但是他们都closures了整个导航控制器,删除视图2和1(返回bak到我的主菜单)。

什么是正确的方式滑出视图。

获取对您的UINavigationController的引用并调用

- (UIViewController *)popViewControllerAnimated:(BOOL)animated 

在上面。

在Swift中会调用这个方法

 self.navigationController?.popViewControllerAnimated(true) 

在迅速,你也可以打电话给:

 self.navigationController?.popToRootViewControllerAnimated(true) 

如果我们使用push segue,那么使用popViewController

 @IBAction func backButtonClicked(_ sender: Any) { self.navigationController?.popViewController(animated: false) } 

在Objective-C上

 [self.navigationController popViewControllerAnimated:YES]; 

跳转到第一个root控制器

 [self.navigationController popToRootViewControllerAnimated:YES]; 

或者是可能的移动到特定的控制器

 [self.navigationController popToViewController:(nonnull UIViewController *) animated:(BOOL)]; 

移动控制器的animation特定的animation过程。 如果animation是false的,控制器将显示没有animation。 UIViewController必须来自堆栈中的一个。