2017-02-05 60 views
0

我想要访问Swift 3中的UIWebView的URL。下面是我用来完成此操作的代码(我的webview的名称是RootView):在Swift 3中访问UIWebView的URL

let 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() 
    } 
} 
+0

给出更多的上下文。如周边代码 – ctabuyo

回答

0

你有三种选择访问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")) 
    } 
} 
+0

感谢您的详细回复! webViewDidFinishLoad函数完美地工作,每当我浏览到webview中的新网站时,我都能够接收到页面的URL。 –

0

尝试删除 “请求”,并使用下列内容:

让CURRENTURL:的NSString = RootView.URL .absoluteString