如何过渡到父UINavigationController

时间:2019-03-01 15:49:04

标签: ios swift uiviewcontroller uikit

我有以下代码,该代码设置并显示了要嵌入到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而不将其嵌入导航控制器中,因为我不再需要它了。我该怎么办?

1 个答案:

答案 0 :(得分:1)

使用this method代替show

func present(_ viewControllerToPresent: UIViewController, 
    animated flag: Bool, 
  completion: (() -> Void)? = nil)