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()
} } `
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? –
@AdeelUrRehman loadingoverlay est cette classe, sinon comment me recommanderiez-vous de le faire. –
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 –