MBProgressHUD没有显示

在我的应用程序中,我正在加载资源沉重的视图,需要大约1到2秒加载。 所以我加载它在这样一个单独的线程:

hud = [[MBProgressHUD alloc] init]; [hud showWhileExecuting:@selector(loadWorkbench:) onTarget:self withObject:nil animated:YES]; 

但是它永远不会出现,并且应用程序看起来被冻结给最终用户。 任何想法,我已经出错了?

是。 它不会出现,因为你永远不会将HUD添加为窗口的子视图。 尝试像这样:

  // Should be initialized with the windows frame so the HUD disables all user input by covering the entire screen HUD = [[MBProgressHUD alloc] initWithWindow:[UIApplication sharedApplication].keyWindow]; // Add HUD to screen [self.view.window addSubview:HUD]; // Register for HUD callbacks so we can remove it from the window at the right time HUD.delegate = self; HUD.labelText = NSLocalizedString(@"Loading Workbench", nil); HUD.detailsLabelText = NSLocalizedString(@"please wait", nil); // Show the HUD while the provided method executes in a new thread [HUD showWhileExecuting:@selector(loadWorkbench:) onTarget:self withObject:nil animated:YES]; 

由于您将自己设置为HUD委托,因此还要添加以下委托方法:

 - (void)hudWasHidden { // Remove HUD from screen [HUD removeFromSuperview]; // add here the code you may need } 

并记得在相应的头文件中添加MBProgressHUDDelegate