2017-08-20 41 views
0

我想加載一個網頁,然後能夠在用戶登錄並重定向後檢索當前網頁。我已經實現了網頁的加載,但在用戶移動到新頁面後無法檢索URL。我現在的代碼是:檢索WebVie URL Swift ||無法指定'ViewController'類型的值來鍵入'UIWebViewDelegate?'

@IBOutlet weak var webView: UIWebView! 
override func viewDidLoad() { 
    super.viewDidLoad() 
    // Do any additional setup after loading the view, typically from a nib. 
    needlogin() 
} 

func needlogin(){ 
    let url = URL(string: "https://www.instagram.com/oauth/authorize/?client_id="+clientid+"&redirect_uri="+redirecturl+"&response_type=token&scope=likes+comments+public_content+follower_list+relationships") 
    let urlrequest = URLRequest(url: url!) 
    webView.loadRequest(urlrequest) 
    self.webView.delegate = self 

} 

func webViewDidFinishLoad(_ webView: UIWebView){ 

} 

我遇到的問題是與self.webView.delegate = self。我收到錯誤消息:

無法將類型'ViewController'的值分配到鍵入 'UIWebViewDelegate?'

此外,我不知道如何檢索網址,並希望得到您的幫助。

回答

0

您需要遵守UIWebviewDelegate協議。所以你需要做類似

class ViewController: UIViewController, UIWebViewDelegate { 

} 

在你的類定義的頂部。

要在webview加載完成後檢索URL,在webViewDidFinishLoad方法中,您需要執行類似webView.request.URL的操作。

聲明:您應該使用WKWebview而不是UIWebview for iOS +應用程序。這樣做的方式將是這樣的例如:

import UIKit 
import WebKit 

class WebviewController: UIViewController, WKNavigationDelegate { 

    var wkWebview : WKWebView? 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     needsLogin() 

    } 

    func needsLogin() { 

     wkWebview = WKWebView.init(frame: self.view.bounds) 
     wkWebview?.navigationDelegate = self 
     self.view.addSubview(wkWebview!) 

     let url = URL(string: "https://www.instagram.com/oauth/authorize/? client_id="+clientid+"&redirect_uri="+redirecturl+"&response_type=token&scope=likes+comments+public_content+follower_list+relationships") 
     let urlRequest: URLRequest = URLRequest.init(url: url!) 
     wkWebview?.load(urlRequest) 

    } 

    override func didReceiveMemoryWarning() { 
     super.didReceiveMemoryWarning() 
     // Dispose of any resources that can be recreated. 
    } 

    public func webView(_ webView: WKWebView, didFail navigation: WKNavigation!, withError error: Error) { 
     print("\(error.localizedDescription)") 
    } 

    public func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) { 
    // This is the URL you need. 
    let url = webView.url 
    } 
    } 
相關問題