如何在swift中从webView获取URL

Hai*_*med 3 nsurl uiwebview swift swift3

我有疑问,我该如何从中获取网址webView?我执行以下代码,然后得到了nil

代码我正在尝试:

override func viewWillAppear(_ animated: Bool) {
    super.viewWillAppear(true)
    webView.loadRequest(URLRequest(url: URL(string: "https://www.youtube.com/watch?v=Vv2zJErQt84")!))
    if let text = webView.request?.url?.absoluteString{
         print(text)
    }
}
Run Code Online (Sandbox Code Playgroud)

Nir*_*v D 12

你没有得到url因为webView没有完成所请求的加载URL,你可以URLwebViewDidFinishLoad方法中得到它UIWebviewDelegate.为此,您需要设置webView当前的委托ViewController并需要实现UIWebviewDelegate.

webView.delegate = self
Run Code Online (Sandbox Code Playgroud)

现在您可以获取当前加载URLwebViewin webViewDidFinishLoad方法.

func webViewDidFinishLoad(_ webView: UIWebView) {
    if let text = webView.request?.url?.absoluteString{
         print(text)
    }
}
Run Code Online (Sandbox Code Playgroud)


Bij*_*wat 7

对于swift 5swift 4.2使用let url = webView.url?.absoluteString:-

首先导入 WebKit :-

import WebKit
Run Code Online (Sandbox Code Playgroud)

然后添加协议:-

class ViewController: UIViewController, WKNavigationDelegate
Run Code Online (Sandbox Code Playgroud)

然后添加委托:-

    //MARK:- WKNavigationDelegate

func webView(_ webView: WKWebView, didFailProvisionalNavigation navigation: WKNavigation!, withError error: Error) {
    print(error.localizedDescription)
}
func webView(_ webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) {
    print("Strat to load")
    
    if let url = webView.url?.absoluteString{
        print("url = \(url)")
    }
}
func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
    print("finish to load")
   
    if let url = webView.url?.absoluteString{
        print("url = \(url)")
    }
}
Run Code Online (Sandbox Code Playgroud)