0

MBProgressHUDタブを切り替えるときに表示したい があります。これは私のアプリデリゲートにあります。最初の 3 つのタブのみに HUD を表示するために、このコードをここに用意しました。

 -(void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController{

  if ([viewController isKindOfClass:[UINavigationController class]]) {  
    if (tabBarController.selectedIndex >= 3) {

        UINavigationController *nav = (UINavigationController *) viewController;
        [nav popToRootViewControllerAnimated:NO];            
    }

    else {
        UINavigationController *nav = (UINavigationController *) viewController;

        HUD = [[MBProgressHUD alloc] initWithView:nav.view];
        [nav.view addSubview:HUD]; 
        HUD.labelText = @"Loading";
        [HUD show:YES];

        [nav popToRootViewControllerAnimated:NO];            
    }
  }
}

初めて自分のページを表示したときは機能しますが、2 回目に戻っても非表示になりません。私は私の[appDel.HUD hide:YES afterDelay:1.0];中に私のものを持っていviewDidAppearます。

ページにアクセスするたびに HUD を非表示にするにはどうすればよいですか?

4

2 に答える 2

0

MBProgressHUD ビューが既にアクティブになっているかどうかを確認する必要があります。

if (!HUD) {
    [self showLoadingHUD];
}
于 2012-09-25T20:55:30.310 に答える
0

MBProgressHUD を UINavigationController 内の別のビューに追加している可能性があると思います。次に、ルートにポップし、存在しない MBProgressHUD を削除しようとしています。これを試してください(テストされていないコード)...

UINavigationController *nav = (UINavigationController *) viewController;
[nav popToRootViewControllerAnimated:NO];

if(![nav.visibleViewController.view.subViews containsObject:MBProgressHUD])
{
    [MBProgressHUD showHUDAddedTo:nav.visibleViewController.view animated:YES];
    MBProgressHUD.labelText = @"Loading";  
}
else
{
     [MBProgressHUD setHidden:NO];
}   
于 2012-08-07T15:11:23.263 に答える