2012-08-27 2 views
2

В моем приложении у меня есть UINavigationController внутри UITabBar Когда я показываю мой HUD весь экран заблокирован за исключением TabBar. Таким образом, единственный способ отклонить мой HUD - это нажать на вкладку. Я также хотел бы, чтобы закрыть его, когда я нажимаю на кнопку «назад» на мой NavigationController Вот мой код:iphone - MBProgressHUD предотвратить блокировку navigationController

hud = [[MBProgressHUD alloc] initWithView:self.navigationController.view]; 
[self.navigationController.view addSubview:hud]; 
hud.delegate = self; 
hud.labelText = @"Loading..."; 
[hud show:YES]; 

ответ

4

Вы хотите добавить мнение HUD к навигации контроллера - вот почему вы не можете взаимодействовать с Панель навигации.

Вы хотите, чтобы заблокировать self.navigationController.topViewController.view, который, я думаю, в вашем случае доступен через self.view.

Попробуйте следующее:

hud = [[MBProgressHUD alloc] initWithView:self.view]; 
[self.view addSubview:hud]; 

Дайте нам знать, если выше работает для вас. Если нет, я улучшу ответ, чтобы найти решение.

+0

Да, вы правы! Это решило мою проблему :-) – Oleg

+0

После реализации вашего ответа HUD отображается в разных положениях в зависимости от того, прокручивал ли я мой tableView или нет. Как я могу это исправить? – Oleg

1

Hud сделает userIntrection отключенным ... поэтому пользователь не может коснуться области, где добавлен хад ... так что просто добавьте хад, где вы хотите его добавить ... но убедитесь, что там нет никакого пользовательского интерфейса меняется, когда HUD работает, потому что HUD работает на вторичном потоке и изменения на вторичном потоке сделать ваш крах приложения ....

HUD = [[MBProgressHUD alloc] initWithView:self.view]; 
    HUD.graceTime = .1; 
    HUD.labelFont = [UIFont fontWithName:@"Arial" size:16]; 
    HUD.labelText = @"Loading.."; 
    HUD.delegate = self; 
    [self.view addSubview:HUD]; 
    [HUD showWhileExecuting:@selector(loginJsonParsing) onTarget:self withObject:nil animated:YES]; 
0

Я использовал, чтобы иметь это как ошибку, когда пользователь нажимает на кнопку назад от навигационная панель, в то время как HUD все еще работает в фоновом режиме, приложение BOOM сокрушает, мне удалось исправить это с принятым ответом в более коротком коде. Это зависит от того, как вы хотите использовать HUD. Я использую значение по умолчанию.

Показать:

[MBProgressHUD showHUDAddedTo:self.navigationController.view animated:YES]; 

Hide:

dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{ 
    dispatch_async(dispatch_get_main_queue(), ^{ 
     [MBProgressHUD hideHUDForView:self.navigationController.view animated:YES]; 
    }); 
}); 
Смежные вопросы