2017-05-27 2 views
0

Je n'arrive pas à faire en sorte que mon indicateur d'activité s'arrête et se masque une fois que ma page Web est chargée dans mon application. Voici mon code avec le activityIndicator.stopAnimating() enlevé parce que partout je le mets dans mon code empêche même l'indicateur de démarrer.Arrêter et masquer l'indicateur d'activité lorsque la page Web est chargée

Voici mon code:

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") 
    } 

} 

Répondre

-1

Il devrait être suffisant pour simplement utiliser votre activityIndicator au sein webViewDidStartLoad et webViewDidFinishLoad.

Pas besoin de le cacher, assurez-vous simplement que l'attribut hidesWhenStopped est vrai. En définissant ceci dans votre Storyboard ou activityIndicator.activityIndicator.hidesWhenStopped dans le webViewDidFinishLoad.

func webViewDidStartLoad(_ webView : UIWebView) { 
    activityIndicator.startAnimating() 
} 

func webViewDidFinishLoad(_ webView : UIWebView) { 
    activityIndicator.stopAnimating() 
} 
0

Jetez un oeil à UIWebViewDelegate, comme vous essayez de l'utiliser est des fonctions mais ne sont pas héritant et l'attribution de sa catégorie.

Bien que vous devriez regarder dans MVC, vous pouvez simplement avoir votre contrôleur de vue être votre délégué.

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

Après que vos fonctions webViewDidStartLoad et webViewDidFinishLoad devraient fonctionner comme prévu.