在不丢失导航栏的情况下呈现第二个视图控制器
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)
我编写了以下代码,每当用户单击网页的 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)