2 votes

IOS MBProgressHUD affiche une erreur de localisation (ce n'est pas le centre, l'affichage de chargement est en haut à gauche).

J'utilise MBProgressHUD showWhileExecuting pour interroger certaines données du réseau, mais parfois le MBProgressHUD n'est pas centré

entrer la description de l'image ici

sur les images (numéro en rouge) :

le chargement affiché en haut à gauche et l'arrière-plan affiché au centre.

1. l'affichage du chargement n'est pas sur l'arrière-plan de MBProgressHUD 2. affiche juste un arrière-plan qui ne contient pas de chargement

-(void)viewDidLoad
{
    //autre code ...

    mb = [[MBProgressHUD alloc] initWithView:self.navigationController.view];
    // --> j'essaie ce qui cause aussi une erreur
    //[[MBProgressHUD alloc] initWithWindow:self.view.window]; 
    // --> erreur aussi
    //[[MBProgressHUD alloc] initWithView:self.view];
    mb.labelText = @"chargement de la ville...";

    [self.navigationController.view addSubview:mb];
    [mb showWhileExecuting:@selector(queryCity:) 
                  onTarget:self 
                withObject:[NSNumber numberWithInt:1] 
             animated:YES];
}

-(void)queryCity:(NSNumber*)flag
{
    //interroger certaines données du réseau.
}

2voto

StuFF mc Points 1146

Pour info : j'ai corrigé en disant

[[[UIApplication sharedApplication] keyWindow] addSubview:_progrès];

au lieu de

[self.view addSubview:_progrès];

Je n'aime pas vraiment ça, aussi parce que ça fonctionne avec self.view dans un autre cas, mais je n'ai pas vu d'autre option ici.

1voto

zt9788 Points 928

Je trouve ce problème. quand MBProgressHUD le nettoyer, il perdra son rectangle.

- (void)cleanUp {
taskInProgress = NO;
    //changé par zt9788 2012-12-26
    //commentez cette ligne pour le corriger.
//self.indicateur = nil;
#if !__has_feature(objc_arc)
[targetForExecution release];
[objectForExecution release];
#else
targetForExecution = nil;
objectForExecution = nil;
#endif
[self hide:useAnimation];

}

1voto

亚历山大 Points 2069

J'ai eu le même problème. Jetez un oeil à ceci, ça l'a résolu pour moi et c'était très simple:

[MBProgressHUD showHUDAddedTo:_selfWeak.viewOverlay animated:YES].center 
 = self.viewOverlay.center;

Si vous sauvegardez l'instancetype que vous recevez en appelant showHUDAddedTo:animated: vous devriez pouvoir faire plus de choses.

0voto

David Brunow Points 1204

L'MBProgressHUD se positionne automatiquement sur la vue à laquelle vous l'ajoutez. Comme vous l'avez ajouté à la vue du contrôleur de navigation, il s'est positionné pour bloquer toute interaction avec la barre de navigation en cours.

Si ce n'est pas ce que vous voulez qu'il se produise, alors ajoutez le sous-vue MBProgressHUD à une vue différente, dans ce cas vous voulez probablement qu'il soit sur self.view plutôt que self.navigationcontroller.view.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X