从导航控制器中解除推送视图

时间:2012-02-25 14:17:16

标签: iphone ios xcode uiviewcontroller

我有一个带有View Controller的导航控制器,显示一个按钮。该按钮使用push segue链接到另一个View Controller,后者会自动添加带有后退按钮的顶部导航栏。一切正常。按后退按钮可滑离第二个视图并返回到第一个视图。

我在第二个视图控制器上有一个按钮,当按下时会运行一些代码并委托回调给第一个视图控制器。再次,这很好。

现在我只需要从代码中解除第二个推送的View,就像按下后退按钮一样。 我尝试过使用dismissModalViewCcontrollerAnimated和dismissViewControllerAnimated,但是它们都会关闭整个导航控制器,它会删除视图2和1(将bak返回到我的主菜单)。

什么是从视图中滑落的正确方法。

5 个答案:

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