MBProgressHUD和UITableView

时间:2014-08-29 21:29:09

标签: ios uitableview mbprogresshud hud

我在填充TableView时显示HUD,但它似乎显示在TableView后面(tableview分隔符打破了hud)。

enter image description here

这是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中执行此操作。

4 个答案:

答案 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];

     });
  });

}