2017-05-29 1 views
0

webViewを既存のWebサイトにロードしようとしました。Web ViewでHTMLをロード中にループが終了しない

私は、URLリンクを持つナビゲーションバー上のボタンを追加しました:

}else if(navigationType == UIWebViewNavigationType.other){ 

アプリは永遠にループ:私はこの文で

webView.loadHTMLString(myHTMLString as String, baseURL: nil) 

のコメントを解除すると、しかし

override func viewDidLoad() { 
    super.viewDidLoad() 

    webView.delegate = self 


    var myHTMLString = "" 
    guard let myURL = URL(string: domainURLString) else { 
     print("Error: \(domainURLString) doesn't seem to be a valid URL") 
     return 
    } 

    do { 
     myHTMLString = try String(contentsOf: myURL, encoding: .utf8) 
    } catch let error { 
     print("Error: \(error)") 
    } 
    webView.frame = view.bounds 
    webView.scalesPageToFit = true 

    createBottomNavigationBar() 


    webView.loadHTMLString(myHTMLString as String, baseURL: nil) 

} 




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

    print("===============================start===============================") 

    let myURLString:String = (request.url?.absoluteString)! 

    var myHTMLString = "" 

    if navigationType == UIWebViewNavigationType.linkClicked { 
     print("link clicked") 

     webView.stopLoading() 

     var myHTMLString = "" 
     let myURL = URL(string: myURLString) 
     do { 
      myHTMLString = try String(contentsOf: myURL!, encoding: .utf8) 
     } catch let error { 
      print("Error: \(error)") 
      return true 
     } 

     webView.loadHTMLString(myHTMLString as String, baseURL: nil) 

     print("first") 
     print(request.url) 


    }else if(navigationType == UIWebViewNavigationType.other){ 
     print("This is for Navigation Button click") 
     //webView.loadHTMLString(myHTMLString as String, baseURL: nil) 
    } 
    else{ 
     print("else") 
    } 
    return true 

を。

ナビゲーションボタンの1つがクリックされたときのステートメントです。それは "http://yahoo.com/mail"のような内部URLにリダイレクトされます。

答えて

1

これは、コードに基づいて予想される動作です。行

webView.loadHTMLString(myHTMLString as String, baseURL: nil) 

viewDidLoadは、HTMLを読み込もうとします。これは、順番にデリゲートメソッド内でデリゲートメソッド

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

を呼び出すコードがelse ifケースに当たったとき、それは再び順番に再デリゲートメソッドを呼び出します

webView.loadHTMLString(myHTMLString as String, baseURL: nil) 

を呼び出します。それは周期的なループです。コードは必要に応じて動作しています。ロジックを変更する必要があります。

+0

私はロジックを変更し、それは動作します!ありがとう! – Jinna

関連する問題