UIWebView.loading返回false

时间:2015-03-29 18:54:03

标签: ios swift uiwebview

使用swift使用以下代码:

super.viewDidLoad()
let webView = UIWebView(frame: self.view.bounds)
view.addSubview(webView)

let URL = NSURL(string: "http://www.google.com")
webView.loadRequest(NSURLRequest(URL: URL!))
println(webView.loading)

打印错误,屏幕为空白。这是如何解决的?

2 个答案:

答案 0 :(得分:1)

这是完全正常的行为。 {UI}事件(在本例中为UIWebView)已完成执行之前,viewDidLoad实际上并未开始加载内容。因此,立即检查它会返回false,因为它尚未启动。

如果您想要跟踪UIWebView的成功或失败,您应该在视图控制器中实现UIWebViewDelegate。这样,当请求完成加载或失败时,您将获得回调。

答案 1 :(得分:0)

我完全不确定UIWebView如何加载其数据的内部结构或者当你调用loadRequest时究竟发生了什么,但是与我的期望相反,直到该方法才会发生任何实际情况名为loadRequest的人已经返回。

请考虑以下代码:

@IBAction func buttonPress(sender: UIButton) {
    let webview = UIWebView(frame: self.view.bounds)
    view.addSubview(webview)

    let url = NSURL(string: "http://www.google.com")
    webview.delegate = self
    webview.loadRequest(NSURLRequest(URL: url!))
    println("buttonPress: webview.loading? \(webview.loading)")
}

func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
    println("webview asking for permission to start loading")
    return true
}

func webViewDidStartLoad(webView: UIWebView) {
    println("webview did start loading")
}

func webView(webView: UIWebView, didFailLoadWithError error: NSError) {
    println("webview did fail load with error: \(error)")
}

func webViewDidFinishLoad(webView: UIWebView) {
    println("webview did finish load!")
}

此处,println方法中的buttonPress始终在任何其他方法之前执行。实际上,似乎无论我们在loadRequest调用之后放置什么类型的代码,它都会在Web视图之前执行 all ,甚至会询问shouldStartLoadingWithRequest:

webview.loadRequest(NSURLRequest(URL: url!))
for _ in 1...10000 {
    println("buttonPress: webview.loading? \(webview.loading)")
} 

万次迭代,但在buttonPress方法返回之前,webview尚未开始。

与此同时,webview.loading只会在true和加载可以停止的两种方式之一(失败/成功)之间返回webViewDidStartLoadwebView(webView:didFailLoadWithError:)或{{1} })。

IF 您实施了webViewDidFinishLoad()协议并设置了网络视图的委托,您可以实施这些方法来跟踪加载过程。如果由于某种原因,您的网络视图没有加载网址,那么实施UIWebViewDelegate是获取任何类型的诊断信息以确定加载失败的唯一方法。