控制器中的故事板不再显示导航栏 - Swift(更新了视图控制器以处理打开的链接 WEBVIEW)

问题描述 投票:0回答:0

使用以下代码,我能够在 Storyboard 上显示我的导航栏构建,但是,andy URL 链接无法打开并且已失效。我发现我的 ViewController 需要一种方法来处理使用决策处理程序。 (参见我尝试了什么部分)

导入UIKit 导入WebKit

SecondViewController 类:UIViewController {

        @IBOutlet weak var webViewTwo: WKWebView!
        override func viewDidLoad() {
            super.viewDidLoad()
            

            
            let url = URL(string: "https://on.sprintful.com/dr-clutter-junk")
            webViewTwo.load(URLRequest(url: url!))
                  
        }
        
        override var preferredStatusBarStyle: UIStatusBarStyle {
            return .lightContent
        }
 

 

}

enter image description here

部分:我尝试了什么

使用以下代码,链接可以工作,但故事板中的导航栏不显示。 我相信 IB Outlet 参考才是问题所在。当我去编辑

“func webView(_ webView:WKWebView,decidePolicyFor navigationAction:WKNavigationAction,decisionHandler:”并将其更改为“func webViewTwo(_ webView:WKWebView,decidePolicyFor navigationAction:WKNavigationAction,decisionHandler:”导航栏不会显示,链接也不起作用。

导入UIKit 导入WebKit

类 SecondViewController: UIViewController, WKNavigationDelegate { @IBOutlet var webViewTwo:WKWebView!

override func loadView() {
    webViewTwo = WKWebView()
    view = webViewTwo
    let url = URL(string: "https://calendly.com/drclutterjunk")!
    webViewTwo.load(URLRequest(url: url))
    webViewTwo.allowsBackForwardNavigationGestures = true
    webViewTwo.navigationDelegate = self
    
    
}
func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) {
            if navigationAction.navigationType == .linkActivated  {
                if let url = navigationAction.request.url,
                let host = url.host, host.hasPrefix("dttps://calendly.com") !=
                    UIApplication.shared.canOpenURL(url) {
                        UIApplication.shared.open(url)
                        decisionHandler(.cancel)
                } else {
                    // Open in web view
                    decisionHandler(.allow)
                }
            } else {
                // other navigation type, such as reload, back or forward buttons
                decisionHandler(.allow)
            }
        }

override var preferredStatusBarStyle: UIStatusBarStyle {
    return .darkContent
}


}

enter image description here

ios swift uinavigationcontroller uinavigationbar swiftui-navigationview
© www.soinside.com 2019 - 2024. All rights reserved.