Индикатор MBProgressHUD не скрывает - PullRequest
2 голосов
/ 26 декабря 2011

Я могу успешно показать индикатор HUD в viewDidLoad, но не могу скрыть его в методе webViewDidFinishLoad, когда веб-просмотр полностью загружен Пожалуйста, помогите.

Я использую код ниже:

в .h файле

MBProgressHUD *HUD;

в viewDidLoad

- (void)viewDidLoad
{
    [super viewDidLoad];

    NSString *query = [[NSString alloc] initWithFormat:@"http://localhost/index.php?uid=%@", [[UIDevice currentDevice] uniqueIdentifier]];
    NSURL *url = [[NSURL alloc] initWithString:query];

    NSString *response = [[NSString alloc] initWithContentsOfURL:url];
    if(response)
    {
          [webView loadRequest:[NSURLRequest requestWithURL:url]];
    }
    else
    {
        //NSLog(@"err %@",response);
    }


    HUD = [[MBProgressHUD showHUDAddedTo:self.view animated:YES] retain];
    HUD.delegate = self;
    HUD.labelText = @"loading";

}

и в webViewDidFinishLoad

- (void)webViewDidFinishLoad:(UIWebView *)web
{
    [HUD hide:TRUE]; //it does not work for me :(
}

Ответы [ 4 ]

10 голосов
/ 27 декабря 2011

я исправил ошибку, я переместил код с viewDidLoad на webViewDidStartLoad и на этот раз все работает нормально:)

- (void)webViewDidStartLoad:(UIWebView *)web
{
    MBProgressHUD *HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    HUD.labelText = @"loading";
}

- (void)webViewDidFinishLoad:(UIWebView *)web
{

    [MBProgressHUD hideHUDForView:self.view animated:YES];
}
3 голосов
/ 27 декабря 2011

попробуй с этим

[HUD hide:YES];
if(HUD!=nil && [HUD retainCount]>0)
{ 
    [HUD removeFromSuperview];
    [HUD release];
    HUD=nil;
}
2 голосов
/ 10 мая 2013

Не следует звонить MBProgressHUD с viewDidLoad, попробуйте позвонить с viewDidAppear, и все должно работать хорошо.

0 голосов
/ 26 декабря 2011

Попробуйте удалить его, используя этот метод класса:

+ (BOOL)hideHUDForView:(UIView *)view animated:(BOOL)animated 

.

- (void)webViewDidFinishLoad:(UIWebView *)web
{
    [MBProgressHUD hideHUDForView:self.view animated:YES];
}

Если вы используете этот метод, вам следует подумать о переписывании вашего viewDidLoad следующим образом:

- (void)viewDidLoad
{
    [super viewDidLoad];

    //...

    MBProgressHUD *HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
    HUD.labelText = @"loading";
}
...