Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 在Web视图中加载HTML时永不结束的循环_Swift_Uiwebview_Navigationbar - Fatal编程技术网

Swift 在Web视图中加载HTML时永不结束的循环

Swift 在Web视图中加载HTML时永不结束的循环,swift,uiwebview,navigationbar,Swift,Uiwebview,Navigationbar,我尝试用现有网站加载webView 我在导航栏上添加了带有url链接的按钮: override func viewDidLoad() { super.viewDidLoad() webView.delegate = self var myHTMLString = "" guard let myURL = URL(string: domainURLString) else { print("Error: \(domainURLString) d

我尝试用现有网站加载webView

我在导航栏上添加了带有url链接的按钮:

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
但是,当我取消注释时

webView.loadHTMLString(myHTMLString as String, baseURL: nil)
在本声明中:

}else if(navigationType == UIWebViewNavigationType.other){
应用程序将永远循环


该语句用于当其中一个导航按钮单击时触发。它重定向到内部url,如。

,这将是基于代码的预期行为。线路

webView.loadHTMLString(myHTMLString as String, baseURL: nil)
在viewDidLoad中,将尝试加载HTML。这将依次调用委托方法

webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool
在委托方法内部,当代码遇到elseif情况时,它将再次调用

webView.loadHTMLString(myHTMLString as String, baseURL: nil)
这将再次调用委托方法。这是一个循环。代码正常工作。你需要改变逻辑