0

我有一个MBProgressHUD我想在切换标签时显示的。这是在我的应用程序委托中。我在这里有这段代码,仅在前三个选项卡上显示 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];            
    }
  }
}

我第一次查看我的页面时它可以工作,但第二次返回它并没有隐藏。我有我[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 回答