如何在保持导航栏存在的同时以模态方式呈现视图控制器。 (对于设置视图控制器)

Posted

技术标签:

【中文标题】如何在保持导航栏存在的同时以模态方式呈现视图控制器。 (对于设置视图控制器)【英文标题】:How to present view controller modally while keeping navigation bar present. (For a settings view controller) 【发布时间】:2017-11-03 16:41:26 【问题描述】:

这是我所说的一个例子:https://media.giphy.com/media/3o6nUPLqKrMN64tdNm/giphy.gif 许多应用程序都这样做。添加新联系人时的联系人应用程序等。但是,当我尝试以模态方式显示我的设置页面时,导航栏消失了。知道如何解决这个问题吗?提前致谢!

【问题讨论】:

创建一个以根视图控制器为视图控制器的导航控制器,然后呈现导航控制器。 现在使用导航控制器。它只是工作 非常简单。这是一个独立的导航控制器,只是为了给完成按钮留一个位置。它有自己的导航栏——与你现有的导航控制器和导航栏无关。 【参考方案1】:

创建一个以根视图控制器为视图控制器的导航控制器,然后呈现导航控制器。像这样。

let vc =  // your view controller 
let nav = UINavigationController(rootViewController: vc)
self.present(nav, animated: true, completion: nil)

【讨论】:

谢谢!如何从第一个视图控制器访问第二个视图控制器中的变量? @JackGruber 使用转场。将您的导航控制器作为目标控制器。并将您的嵌入式 vc 设置为 topViewControllerUINavigationController 谢谢!还有一个问题,我如何从 rootview 控制器访问第二个导航控制器。如果我要执行 self.navigationController!.viewControllers[0],它只会使用我原来的导航控制器。 没关系在子 ViewControllers 数组中找到它。谢谢! 调用self.dismiss(animated: true, completion: nil) 是不是以编程方式关闭 vc 的正确方法?

以上是关于如何在保持导航栏存在的同时以模态方式呈现视图控制器。 (对于设置视图控制器)的主要内容,如果未能解决你的问题,请参考以下文章

在导航堆栈中以模态方式呈现视图控制器

模态显示的表格视图没有导航栏

呈现一个模态视图控制器,但不要隐藏导航栏

如何检查视图控制器是不是以模态方式呈现或推送到导航堆栈上?

以模态方式将嵌入在导航控制器中的视图控制器与标签栏控制器分开

在呈现模态视图时显示 UITabBar