如何过渡出父 UINavigationController
Posted
技术标签:
【中文标题】如何过渡出父 UINavigationController【英文标题】:How to transition out of parent UINavigationController 【发布时间】:2019-03-01 15:49:03 【问题描述】:我有以下代码,它设置并显示要嵌入到 UINavigationController 中的 UIViewController:
private func transitionToMainVC()
let vc = UINavigationController(rootViewController: SpacesVC())
DispatchQueue.main.async
self.show(vc, sender: self)
现在,在SpacesVC
我想show()
另一个 UIViewController,但在“父”UINavigationController
之外。
当我在SpacesVC
中使用以下代码时:
// Called by a button touch up inside
@objc private func transitionToMainVC()
let vc = NextVC()
self.show(vc, sender: self)
它转换为NextVC
,但它在屏幕顶部显示导航栏;也就是说,新的视图控制器仍然嵌入在第一个 sn-p 中定义的 UINavigationController
下。
我知道在NextVC
中隐藏导航栏的可能性如下:
override func viewWillAppear(_ animated: Bool)
super.viewWillAppear(animated)
navController.isNavigationBarHidden = true
但我想 show()
NextVC
而不将其嵌入导航控制器中,因为我不再需要它了。我该怎么做?
【问题讨论】:
【参考方案1】:使用this method 代替show
。
func present(_ viewControllerToPresent: UIViewController,
animated flag: Bool,
completion: (() -> Void)? = nil)
【讨论】:
以上是关于如何过渡出父 UINavigationController的主要内容,如果未能解决你的问题,请参考以下文章