0

J'ai tabbarcontroller et j'ai 5 onglets dans lesquels je veux afficher une superposition contenant un indicateur d'activité lorsque la barre d'onglets est pressée et que l'utilisateur attend le chargement de la vue. Les contrôleurs de vue contiennent des fonctions qui obtiennent des données à partir de serveurs. Je dois donc afficher un indicateur d'activité de chargement. Mais quand je l'ai mis dans viewWillDisappear ou viewWillAppear il ne vient pas. Donc, j'essaye de le faire dans tabbarcontroller lui-même, quand un élément est sélectionné. Mais ça ne se passe pas. L'indicateur d'activité est chargé après le passage de la vue à la nouvelle vue. La superposition de chargement devrait être immédiate.Chargement de l'indicateur lors de la transition des contrôleurs de vue dans tabbarcontroller

override func tabBar(tabBar: UITabBar, didSelectItem item: UITabBarItem){  

     dispatch_async(dispatch_get_global_queue((QOS_CLASS_UTILITY), 0)) { 
     dispatch_async(dispatch_get_main_queue()) { 
     LoadingOverlay.shared.showOverlay(self.view) 
     } 
    }} 
public class LoadingOverlay{ 

     var overlayView = UIView() 
     var activityIndicator = UIActivityIndicatorView() 

     class var shared: LoadingOverlay { 
     struct Static { 
      static let instance: LoadingOverlay = LoadingOverlay() 
     } 
     return Static.instance 
    } 

    public func showOverlay(view: UIView) { 

     overlayView.frame = CGRectMake(0, 0, 80, 80) 
     overlayView.center = view.center 
     overlayView.backgroundColor = UIColor(white: 0.5, alpha: 0.7) 
     overlayView.clipsToBounds = true 
     overlayView.layer.cornerRadius = 10 

     activityIndicator.frame = CGRectMake(0, 0, 40, 40) 
     activityIndicator.activityIndicatorViewStyle = .WhiteLarge 
     activityIndicator.center = CGPointMake(overlayView.bounds.width/2, overlayView.bounds.height/2) 

     overlayView.addSubview(activityIndicator) 
     view.addSubview(overlayView) 

     activityIndicator.startAnimating() 
      } 

    public func hideOverlayView() { 
     activityIndicator.stopAnimating() 
     overlayView.removeFromSuperview() 
    } }              ` 
+1

Pourquoi ne pas vous avoir une classe de base qui montrera et cachera l'indicateur d'activité et étendra toutes les classes om cette classe de base qui ont besoin d'activité à montrer? –

+0

@AdeelUrRehman loadingoverlay est cette classe, sinon comment me recommanderiez-vous de le faire. –

+0

LoadingOverlay sera votre classe de base et les contrôleurs dans lesquels vous avez besoin d'un indicateur d'activité devrait s'étendre de LoadingOverlay. Maintenant, dans LoadingOverlay déclarer deux méthodes showSpinner et hideSpinner –

Répondre

0

S'il vous plaît utiliser la bibliothèque IJProgressView pour afficher HUD

Utilisation: Pour afficher la vue des progrès,

IJProgressView.shared.showProgressView(view) 

Pour masquer la vue des progrès,

IJProgressView.shared.hideProgressView()