我有一个带有View Controller的导航控制器,显示一个按钮。该按钮使用push segue链接到另一个View Controller,后者会自动添加带有后退按钮的顶部导航栏。一切正常。按后退按钮可滑离第二个视图并返回到第一个视图。
我在第二个视图控制器上有一个按钮,当按下时会运行一些代码并委托回调给第一个视图控制器。再次,这很好。
现在我只需要从代码中解除第二个推送的View,就像按下后退按钮一样。 我尝试过使用dismissModalViewCcontrollerAnimated和dismissViewControllerAnimated,但是它们都会关闭整个导航控制器,它会删除视图2和1(将bak返回到我的主菜单)。
什么是从视图中滑落的正确方法。
答案 0 :(得分:37)
获取对UINavigationController的引用并调用
- (UIViewController *)popViewControllerAnimated:(BOOL)animated
就可以了。
答案 1 :(得分:11)
在Swift中,它将调用方法
<script>(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.4&appId=1166049000075578 ";
fjs.parentNode.insertBefore(js, fjs);
(document, 'script', 'facebook-jssdk'));</script>
答案 2 :(得分:2)
在swift中你也可以打电话:
self.navigationController?.popToRootViewControllerAnimated(true)
答案 3 :(得分:2)
如果我们使用push segue,那么使用popViewController
@IBAction func backButtonClicked(_ sender: Any) {
self.navigationController?.popViewController(animated: false)
}
答案 4 :(得分:1)
在Objective-C上
offset
跳转到第一个[self.navigationController popViewControllerAnimated:YES];
控制器
root
或可能转移到特定控制器
[self.navigationController popToRootViewControllerAnimated:YES];
动画特定动画移动控制器的过程。如果动画为[self.navigationController popToViewController:(nonnull UIViewController *) animated:(BOOL)];
,控制器将显示没有动画。
false
必须来自堆栈中的一个。