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)
此处您的导航栏将替换为新的导航栏。
我有两个 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)
此处您的导航栏将替换为新的导航栏。