2016-11-16 18 views
1

I have ViewController1 with WKWebView need open a link inside ViewController2 WKWebView.斯威夫特3 WKWebView打開鏈接(URL)在不同的視圖控制器WKWebView

我在下面tryed代碼,但不知道如何request.url傳遞給第二的ViewController的WKWebView。

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { 
    switch navigationType{ 
       case .linkClicked: 
    self.performSegue(withIdentifier: "mySeque", sender:self) 


       return false 


      default: 
       return true 

      } 
} 

回答

0

你需要從FirstWKWebViewController傳遞的URLRequest和WKWebViewConfiguretion到SecondWKWebViewController

請參考下實施


在FirstWKWebViewController保持全局變量

var firstURLRequest: URLRequest? 

說你WKWebView是

firstWebView 

修改代碼爲

func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { 

switch navigationType{ 

      case .linkClicked: 

       firstURLRequest = request //<---code add 
       self.performSegue(withIdentifier: "mySeque", sender:self) 
       return false 

      default: 
       return true 
     } 

}

var secondURLRequest: URLRequest? 
var secondWebConfiguration: WKWebViewConfiguration? 

然後在FirstWKWebViewController在SecondWKWebViewController創建兩個變量賽格瑞調用之前通過WebConfiguration和URLReqest

func prepare(for segue: UIStoryboardSegue, sender: Any?) { 

    if let segueIdentifier = segue.identifier { 

     switch segueIdentifier { 
     case "mySeque": 

      if let secondWKWebVC = segue.destination as? SecondWKWebViewController { 
       if nsurlreq != nil { secondWKWebVC.secondURLRequest = nsurlreq! as URLRequest } 
       secondWKWebVC.secondWebConfiguration = firstWebView.configuration  
      } 
     default: 
      return 
     } 
    } 

} 

然後在SecondWKWebViewController

guard let secondURLRequest = secondURLRequest else 
{ fatalError("No secondURLRequest") } 

guard let secondWebConfiguration = secondWebConfiguration else 
{ fatalError("No webConfiguration") } 

//WKWebView 
seconWKWebView = WKWebView(frame: <yourValue>, configuration: secondWebConfiguration)