我有以下代码,该代码设置并显示了要嵌入到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
,但它会在屏幕顶部显示导航栏。也就是说,新的视图控制器仍嵌入在第一个代码段的UINavigationController
下。
我知道有可能这样隐藏NextVC
中的导航栏:
override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
navController.isNavigationBarHidden = true
}
但是我想show()
NextVC
而不将其嵌入导航控制器中,因为我不再需要它了。我该怎么办?
答案 0 :(得分:1)
使用this method代替show
。
func present(_ viewControllerToPresent: UIViewController,
animated flag: Bool,
completion: (() -> Void)? = nil)