在Swift 3

时间:2017-02-05 21:39:39

标签: ios uiwebview swift3

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

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()
    }
}

2 个答案:

答案 0 :(得分:0)

尝试删除"请求",并使用以下内容:

let currentURL:NSString = RootView.URL?.absoluteString

答案 1 :(得分:0)

您有三种方法可以访问网址

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"))
    }
}