Swift - 显示另一个带有导航栏的视图控制器

Swift - Present another view controller with its navigation bar

我有两个 ViewControllers -- 一个有故事板,一个没有。这两个视图控制器在顶部都有自己的导航栏。现在,当我使用 self.presentViewController(editorViewController, animated: true, completion: nil) 时,我的 editorViewController 会出现但没有导航栏。

有什么解决办法吗?

尝试self.navigationController!.pushViewController(...)

我使用以下代码修复了问题:

let editorViewController = IMGLYMainEditorViewController()
let navEditorViewController: UINavigationController = UINavigationController(rootViewController: editorViewController)
self.presentViewController(navEditorViewController, animated: true, completion: nil)

我刚刚添加了 navEditorViewController,因为它使我的导航栏及其项目出现。

所以对于仍然对这个问题感到好奇的每个人来说,鉴于我们已经存在 UINavigationController 而不是 current :

Swift 3

首先,我们需要找到我们要呈现的UIViewController

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let destinationViewController = storyboard.instantiateViewController(withIdentifier: "DestinationViewController") as! DestinationViewController

接下来,我们对UINavigationController做同样的事情:

let destinationNavigationController = storyboard.instantiateViewController(withIdentifier: "DestinationNavigationController") as! UINavigationController

然后,我们要将 DestinationViewController 带到目标 UINavigationController 堆栈的顶部:

destinationNavigationController.pushViewController(destinationViewController, animated: true)

最后,只是现在的目的地UINavigationController:

self.present(destinationNavigationController, animated: true, completion: nil)

Swift 5+

let destinationNavigationController = self.storyboard!.instantiateViewController(withIdentifier: "nav") as! UINavigationController
destinationNavigationController.modalPresentationStyle = .fullScreen        
self.present(destinationNavigationController, animated: true, completion: nil)

此处您的导航栏将替换为新的导航栏。