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
必须来自堆栈中的一个。