Ios 在Swift 3中访问UIWebView的URL

Ios 在Swift 3中访问UIWebView的URL,ios,uiwebview,swift3,Ios,Uiwebview,Swift3,我正在尝试访问Swift 3中UIWebView的URL。以下是我用来完成此任务的代码(我的webview的名称是RootView): 让currentURL:NSString=RootView.request?.URL?.absoluteString 但是,我得到一个错误,说“类型为'URLRequest'的值没有成员'URL'”,这会阻止我编译。我知道以前的堆栈溢出用户已经成功地使用了同一行代码,所以我不确定是什么阻止了我获得URL。问题是否在于苹果对Swift 3的修改?谢谢 这是我的完整

我正在尝试访问Swift 3中UIWebView的URL。以下是我用来完成此任务的代码(我的webview的名称是RootView):

让currentURL:NSString=RootView.request?.URL?.absoluteString

但是,我得到一个错误,说“类型为'URLRequest'的值没有成员'URL'”,这会阻止我编译。我知道以前的堆栈溢出用户已经成功地使用了同一行代码,所以我不确定是什么阻止了我获得URL。问题是否在于苹果对Swift 3的修改?谢谢

这是我的完整ViewController.swift文件,我在其中输入了以下代码:

import UIKit

class ViewController: UIViewController, UIWebViewDelegate {

    @IBOutlet weak var RootView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.RootView.delegate = self
        let url1 = URL (string: "https://www.google.com")!
        RootView.loadRequest(URLRequest(url: url1))
        RootView.scrollView.isScrollEnabled = true
        RootView.isUserInteractionEnabled = true
        let currentURL : NSString = RootView.request?.URL?.absoluteString
        print(currentURL)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}
尝试删除“请求”,并使用以下命令:


让currentURL:NSString=RootView.URL?.absoluteString访问URL有三个选项

let currentURL : String? = RootView.request?.mainDocumentURL?.absoluteString
let currentURL : String? = RootView.request?.url?.absoluteString
let currenturl : String? = RootView.stringByEvaluatingJavaScript(from: "window.location.href")
但这三个值都会返回nil,因为请求需要时间,所以在请求完成之前,它们不会准备好。试试看

import UIKit

class URLResearchVC: UIViewController , UIWebViewDelegate {

    @IBOutlet weak var RootView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()
        self.RootView.delegate = self
        let url1 = URL (string: "https://www.google.com")!
        RootView.loadRequest(URLRequest(url: url1))
        RootView.scrollView.isScrollEnabled = true
        RootView.isUserInteractionEnabled = true
        let currentURL : String? = RootView.request?.mainDocumentURL?.absoluteString
        let currentUrl : String? = RootView.request?.url?.absoluteString
        let currenturl : String? = RootView.stringByEvaluatingJavaScript(from: "window.location.href")
        print(currentURL)
        print(currentUrl)
        print(currenturl)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }

    func webViewDidStartLoad(_ webView: UIWebView) {
        print("-------")
        print(webView.request?.mainDocumentURL)
        print("-------")
        print(webView.request?.url?.absoluteString)
        print("-------")
        print(webView.stringByEvaluatingJavaScript(from: "window.location.href"))
    }
    func webViewDidFinishLoad(_ webView: UIWebView) {
        print("-------")
        print(webView.request?.mainDocumentURL)
        print("-------")
        print(webView.request?.url?.absoluteString)
        print("-------")
        print(webView.stringByEvaluatingJavaScript(from: "window.location.href"))
    }
}

提供更多的上下文。如周边代码感谢您的详细回复!webViewDidFinishLoad函数工作得非常好,每次在webview中导航到新网站时,我都能够收到页面的URL。