不能在 Swift 中关闭导航控制器

Posted

技术标签:

【中文标题】不能在 Swift 中关闭导航控制器【英文标题】:Can't dismiss navigation controller in Swift 【发布时间】:2015-06-29 20:31:37 【问题描述】:

所以我有一个简单的导航控制器,带有一个注册,点击完成,然后你转到主页。问题是当您转到主页时,导航控制器随之而来。

正如您在最后一张图片(主页)中看到的那样,导航栏仍然存在。当用户在第一张图片上按“完成”时,我使用self.performSegueWithIdentifier("loginTrue", sender: nil) 转到“主页”。我试过使用

self.presentingViewController?.dismissViewControllerAnimated(true, completion: nil)

但似乎什么也没发生。所以总结一下,关于如何从“主页”“关闭”导航控制器的任何想法?谢谢!

【问题讨论】:

【参考方案1】:

试试

self.navigationController?.popViewControllerAnimated(true)

更新:Swift 4.2

self.navigationController?.popViewController(animated: true)

【讨论】:

【参考方案2】:

注册视图控制器是否以模态方式呈现?然后,在注册视图控制器上,你可以做

self.dismiss(animated: true, completion: nil) 

【讨论】:

【参考方案3】:

尝试仅对 LoginView 使用ViewController。然后使用self.dismissPerformSegue 到达NavigationController

【讨论】:

【参考方案4】:
//hide the navigation bar on this page
override func viewWillAppear(_ animated: Bool) 
    self.navigationController?.isNavigationBarHidden = true

这将隐藏您主页上的导航栏,但请确保您使用 viewWillAppear,这样无论何时返回某个页面,导航都不会重新出现。

【讨论】:

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

在 WPF Frame 控件中关闭导航页面声音

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

从 TableViewController 中关闭 ViewController

如何在导航控件片段中关闭导航 DrawerLayout onBackPressed

如何检查视图控制器是不是已在 Swift 中关闭

swift中滚动视图中的意外视图