2012-08-07 113 views
0

我有一个MBProgressHUD,我想在切换标签页时显示。这是在我的应用程序委托。我这里有这个代码显示HUD上只有前三个标签MBProgressHud第二次看后没有隐藏

-(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?

回答

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]; 
} 
+0

这是在else部分我的'didSelectViewController'正确吗? – BigT 2012-08-07 15:50:23

+0

是的。在其他的括号内。对不起,不清楚这一点。 – 2012-08-07 15:56:33

+0

嗯,我想这是它去的地方,但它仍然不起作用。第一次工作,但不是第二次。 – BigT 2012-08-07 16:08:14

0

你必须检查MBProgressHUD观点已经被激活,如果这样隐藏,或者只是这样做:

if (!HUD) { 
    [self showLoadingHUD]; 
} 
相关问题