加载网页后停止并隐藏活动指示

时间:2017-05-27 10:56:10

标签: ios swift webview uiactivityindicatorview

我的活动指示器在我的应用中加载网页时停止并隐藏,我遇到了问题。这是我删除了activityIndi​​cator.stopAnimating()的代码,因为我把它放在代码中的任何地方都会阻止指标启动。

这是我的代码:

import UIKit

class AppointmentsViewController: UIViewController {

    @IBOutlet weak var myWebView: UIWebView!
    @IBOutlet weak var activityIndicator: UIActivityIndicatorView!


    override func viewDidLoad() {
        super.viewDidLoad()

        if Reachability.isConnectedToNetwork(){

            webViewDidStartLoad(webView: myWebView)

            let url = URL(string: "https://www.posebeautysalon.com/appointment")!

            myWebView.loadRequest(URLRequest(url: url))

        }
        else{
            print("Internet Connection not Available!")

            let alertController = UIAlertController(title: "No Internet Connection", message: "Make sure your device is connected to the internet.", preferredStyle: .alert)

            // Create the actions
            let okAction = UIAlertAction(title: "OK", style: UIAlertActionStyle.default) {
                UIAlertAction in
                NSLog("OK Pressed")

            }

            // Add the actions
            alertController.addAction(okAction)

            // Present the controller
            self.present(alertController, animated: true, completion: nil)
        }

    }

    func webViewDidStartLoad(webView: UIWebView) {
        activityIndicator.startAnimating()
        NSLog("The webview is starting to load")
    }

    func webViewDidFinishLoad(webView: UIWebView) {
        activityIndicator.stopAnimating()
        activityIndicator.isHidden=true;
        NSLog("The webview is done loading")
    }

}

2 个答案:

答案 0 :(得分:0)

看看UIWebViewDelegate,因为你正在尝试使用它的功能,但不是继承并分配它的类。

虽然您应该查看MVC,但您可以让您的视图控制器成为您的代表。

class AppointmentsViewController: UIViewController, UIWebViewDelegate {
  ...
  func viewDidLoad() {
    super.viewDidLoad()
    myWebView.delegate = self
    ...
  }
}

之后,您的webViewDidStartLoadwebViewDidFinishLoad功能应按预期工作。

答案 1 :(得分:-1)

activityIndicatorwebViewDidStartLoad内使用webViewDidFinishLoad就足够了。

无需隐藏它,只需确保它有{ {1}}属性为true。通过在故事板中设置此项,或在hidesWhenStopped中设置activityIndicator.activityIndicator.hidesWhenStopped

webViewDidFinishLoad