如何为loadRequest添加闭包?

时间:2017-11-06 19:07:07

标签: ios swift

我的目标是在webView仍在从服务器获取数据时执行活动指示

但我似乎无法找到办法。我能想到的唯一方法是关闭但是怎么做?

如果我没有添加任何活动指示器,那么它只会在白色屏幕上空白,然后在一段时间后会显示网页。这不是一个好的用户体验。

这是代码

import UIKit

class SignupWebViewController: UIViewController {

    @IBOutlet var signupWebView: UIWebView!

    override func viewDidLoad() {
        super.viewDidLoad()

        let url = URL(string: "http://www.example.com/merchants/signup")

        // How Do i do a closure here?
        signupWebView.loadRequest(URLRequest(url: url!))

    }
}

1 个答案:

答案 0 :(得分:2)

您必须实施UIWebViewDelegate方法。在加载请求之前,请执行以下操作:

signupWebView.delegate = self;

并且不要忘记将其添加到ViewController

class SignupWebViewController: UIViewController, UIWebViewDelegate {

然后将您的逻辑添加到此方法中:

optional public func webViewDidStartLoad(_ webView: UIWebView) {
    // show your activity indicator
}

optional public func webViewDidFinishLoad(_ webView: UIWebView) {
    // hide your activity indicator
}

顺便说一句,UIWebView现已弃用。请改用WKWebView