我在填充TableView时显示HUD,但它似乎显示在TableView后面(tableview分隔符打破了hud)。
这是TableViewController中的代码:
- (void)viewDidLoad {
[super viewDidLoad];
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeText;
hud.labelText = @"Loading";
// Populate the table
[self getTableData];
self.tableView.rowHeight = 90;
}
它只在TableViews中执行此操作。
答案 0 :(得分:12)
这里的问题是你在视图加载时添加HUD,这可能是在你的tableView显示之前,因此tableView被创建并显示为覆盖HUD。将该代码移动到viewDidAppear中,您的问题就会消失:
- (void)viewDidAppear:(BOOL)animated {
[super viewDidAppear:animated];
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeText;
hud.labelText = @"Loading";
}
答案 1 :(得分:12)
如果要在self.navigationController.view
self.view
代替viewDidLoad
答案 2 :(得分:10)
包括这个:
#import <QuartzCore/QuartzCore.h>
您可以使用 layer.zPosition 来命令对象/视图的可见性。
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeText;
hud.labelText = @"Loading";
hud.layer.zPosition = 2;
self.tableView.layer.zPosition = 1;
zPosition值越高,显示的优先级越高。
答案 3 :(得分:0)
Even in ViewDidLoad also we can handle it like this::
- (void)viewDidLoad {
[super viewDidLoad];
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.labelText = @"Loading..";
dispatch_async(dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
[self contactsFromAddressBook];
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
[self.tableView reloadData];
});
});
}