如果没有互联网连接,请加载本地文函数一次又一次地调用自己

时间:2016-07-08 15:00:09

标签: ios swift webview reachability

这是我的代码,解释如下:

func webViewDidStartLoad(homewebview: UIWebView) {

    if Reachability.isConnectedToNetwork() == true {
        print("Internet connection: OK")

    } else {
        print("Internet connection: FAILED")

        let path: String = NSBundle.mainBundle().pathForResource("file", ofType: "html")!
        let url: NSURL = NSURL.fileURLWithPath(path)
        let request: NSURLRequest = NSURLRequest(URL: url)
        homewebview.loadRequest(request)
    }
}

点击超链接webViewDidStartLoad时会调用。

当有互联网连接时,它会打印Internet connection: OK

如果没有互联网连接,则应打印Internet connection: FAILED并打开file.html

但是当打开本地文件时,它会再次调用整个函数,并且一次又一次......就像一个永无止境的循环。

我想在WebView中单击(超级)链接时检查Internet连接。如果没有互联网连接,则应在此WebView中加载本地文件,而无需再次调用该函数。

我该如何解决?有人有想法吗?

1 个答案:

答案 0 :(得分:1)

当您加载本地页面以跳过递归例程时,只需竖起一个标志。

var loadingLoacalPage = false
//..//
func webViewDidStartLoad(homewebview: UIWebView) {
        if Reachability.isConnectedToNetwork() == true {
            print("Internet connection: OK")

        } else {
            print("Internet connection: FAILED")

            let alert = UIAlertView(title: "No internet connection", message: "Check internet connection.", delegate: nil, cancelButtonTitle: "Okay")
            alert.show()

            if(!loadingLoacalPage){

            let path: String = NSBundle.mainBundle().pathForResource("file", ofType: "html")!
            let url: NSURL = NSURL.fileURLWithPath(path)
            let request: NSURLRequest = NSURLRequest(URL: url)
            homewebview.loadRequest(request)

            loadingLoacalPage = true

        }
    }
}