脱离导航控制器

Posted

技术标签:

【中文标题】脱离导航控制器【英文标题】:Segue Out of Navigation Controller 【发布时间】:2015-12-24 23:02:35 【问题描述】:

我试图离开初始视图控制器,进入空白视图控制器。这很好,但这会使空白视图控制器也成为导航控制器的一部分,这不是我想要的。我想脱离视图控制器。

在视图控制器中我尝试脱离,它自己弹出,当我尝试视图中的方法时,目标视图控制器会出现,self.navigationController?.topViewController 返回自己,但self.navigationController?.popViewControllerAnimated(animated) 不起作用

【问题讨论】:

【参考方案1】:

如果你有navigationController

self.navigationController?.popViewControllerAnimated(false)

否则

self.dismissViewControllerAnimated(false, completion: nil)

更新

转到您的 Storyboard,选择您要导航到的 ViewController 并添加一个 storyboard id。确保单击“使用情节提要 ID”

转到您要导航的类并添加以下代码

let storyboard = UIStoryboard(name: "Main", bundle: nil)
// vc is the Storyboard ID that you added
// as! ... Add your ViewController class name that you want to navigate to
let controller = storyboard.instantiateViewControllerWithIdentifier("vc") as! ViewController
self.presentViewController(controller, animated: true, completion:  () -> Void in
)

将此代码添加到您想要导航时使用的操作中。

【讨论】:

是的,当您想离开控制器时,在操作中添加上面的行之一。 好的,我做了第一个,但我觉得它正在删除错误的视图控制器,因为那不起作用。 你应该在 viewController 中添加你想要关闭的那一行。 我这样做了,但它正在从导航控制器中弹出 是的,所以,在视图控制器中,我尝试退出,它会自行弹出,当我尝试视图中的方法时,目标视图控制器会出现,self.navigationController?.topViewController 返回自身,但self.navigationController?.popViewControllerAnimated(animated) 不起作用【参考方案2】:

我相信完全无需编写任何代码就可以做到这一点。要脱离导航控制器,请执行以下步骤:

    从具有导航控制器的视图控制器创建一个 Segue 作为它的根视图控制器到您想要进入下一个视图控制器的视图控制器(不在导航控制器内) 点击新序列 打开属性检查器 选择“亲切”->“以形式呈现” 选择“当前”->“超过当前上下文”

【讨论】:

这个导航控制器没有被释放。您仍然可以在模态视图下看到导航视图。 我认为这个问题的答案很糟糕,你没有处理导航控制器堆栈

以上是关于脱离导航控制器的主要内容,如果未能解决你的问题,请参考以下文章

TabBarViewController 的导航栏覆盖来自导航控制器的导航栏

为啥我无法编辑嵌入了导航控制器的导航栏?

停止从导航控制器快速导航

如何将自定义导航栏链接到导航控制器?

停止导航控制器swift的导航

导航控制器:窗口上导航控制器中最上面的视图控制器下方是啥?