在不丢失导航栏的情况下呈现第二个视图控制器

Presenting second view controller without loosing navigation bar

我编写了以下代码,每当用户单击网页的 link 时,就会显示第二个视图控制器。但是,每当我展示它时,第二个视图控制器都会隐藏导航栏。

我希望能够通过允许用户单击导航栏中的 "back" 来关闭新呈现的视图。我该怎么做?

func webView(webView: WKWebView, decidePolicyForNavigationAction navigationAction: WKNavigationAction!,
decisionHandler: ((WKNavigationActionPolicy) -> Void)!){
/* Do not allow links to be tapped */

if navigationAction.navigationType == .LinkActivated{
decisionHandler(.Cancel)

let storyboard = UIStoryboard(name: "Main", bundle: nil)
let vc = storyboard.instantiateViewControllerWithIdentifier("helloview") as UIViewController

self.presentViewController(vc, animated: true, completion: nil)

return
}
decisionHandler(.Allow)
}

这是它的样子。我单击 link,然后显示第二个视图。该视图是一个简单的 UIViewController,上面只有一个标签。但是我 丢失了导航栏 ..

您应该将新的视图控制器推送到导航堆栈,而不是将其显示为模态视图控制器。替换

self.presentViewController(vc, animated: true, completion: nil)

self.navigationController.pushViewController(vc, animated: true)

您将需要 'push' 视图控制器,例如:

self.navigationController?.pushViewController(vc, animated: true)