tabla ratios promedio inventarios interpretacion indicadores financieros ejemplos antiguedad ios delegates uiactivityindicatorview wkwebview

promedio - ratios financieros



Viendo el indicador de actividad en WKWebView usando swift (2)

Estoy trabajando en el siguiente código y trato de mostrar un indicador de actividad en la vista mientras la página se está cargando.

Intenté implementar los métodos de WKNavigationDelegate pero no estoy logrando nada.

Alguna sugerencia en como arreglar esto?

No estoy configurando el delegado de la vista SupportWebView en ningún lugar, pero no sabría cómo hacerlo de forma rápida.

import UIKit import WebKit class SupportWebView: UIViewController, WKNavigationDelegate { @IBOutlet var containerView : UIView? = nil var webView: WKWebView? override func loadView() { super.loadView() self.webView = WKWebView() self.view = self.webView } override func viewDidLoad() { super.viewDidLoad() var dataManager = DataManager.sharedDataManager() var url = dataManager.myValidURL var req = NSURLRequest(URL:url!) self.webView!.loadRequest(req) } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be recreated. } func webView(webView: WKWebView, didStartProvisionalNavigation navigation: WKNavigation!) { UIApplication.sharedApplication().networkActivityIndicatorVisible = true } func webView(webView: WKWebView, didFinishNavigation navigation: WKNavigation!) { UIApplication.sharedApplication().networkActivityIndicatorVisible = false } }


Como comenté, olvidó configurar el delegado de webView :

override func loadView() { super.loadView() self.webView = WKWebView() self.webView.navigationDelegate = self self.view = self.webView }


Debe usar los métodos de delegado para todos los demás propósitos, pero el monitoreo de la ruta clave funciona bien para este único propósito.

Aquí hay una implementación de Swift 4 que funciona bien.

// Somewhere in your view controller private var loadingObservation: NSKeyValueObservation? private lazy var loadingIndicator: UIActivityIndicatorView = { let spinner = UIActivityIndicatorView() spinner.translatesAutoresizingMaskIntoConstraints = false spinner.color = .black return spinner }() override func viewDidLoad() { super.viewDidLoad() // Setup... loadingObservation = webView.observe(/.isLoading, options: [.new, .old]) { [weak self] (_, change) in guard let strongSelf = self else { return } // this is fine let new = change.newValue! let old = change.oldValue! if new && !old { strongSelf.view.addSubview(strongSelf.loadingIndicator) strongSelf.loadingIndicator.startAnimating() NSLayoutConstraint.activate([strongSelf.loadingIndicator.centerXAnchor.constraint(equalTo: strongSelf.view.centerXAnchor), strongSelf.loadingIndicator.centerYAnchor.constraint(equalTo: strongSelf.view.centerYAnchor)]) strongSelf.view.bringSubview(toFront: strongSelf.loadingIndicator) } else if !new && old { strongSelf.loadingIndicator.stopAnimating() strongSelf.loadingIndicator.removeFromSuperview() } } }