MBProgressHUD не останавливается

Вот мой код

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeIndeterminate;
hud.labelText = @"Loading..";
dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_async(dispatchQueue, ^(void)
{
    [self information];
    [hud hide:YES];
});

Я знаю, что информация о методе заканчивается через некоторое время. Но даже после его завершения полоса прогресса не уходит. Что может быть причиной?


person Read Q    schedule 04.04.2013    source источник
comment
попробуйте вызвать [hud hide:YES]; в основном потоке, используя метод performSelectorOnMainThread:withObject:   -  person The iOSDev    schedule 04.04.2013
comment
Можно немного уточнить? Я новичок.   -  person Read Q    schedule 04.04.2013
comment
Итак, вы получили правильный ответ, теперь попробуйте использовать тот, который вам подходит :)   -  person The iOSDev    schedule 04.04.2013


Ответы (1)


Делай это так

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeIndeterminate;
hud.labelText = @"Loading..";
dispatch_queue_t dispatchQueue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
dispatch_async(dispatchQueue, ^(void)
{
[self information];
dispatch_sync(dispatch_get_main_queue(), ^{ 
[hud hide:YES];
});
}); 
person Satheesh    schedule 04.04.2013
comment
Хорошо получается!! Можете ли вы объяснить мне, что именно мы там делали?? - person Read Q; 04.04.2013
comment
Вы скрывали HUD в dispatch_async и что мой друг не является основным потоком. Вы можете использовать dispath_sync или PerformSelectorOnMainThread. Помните, что любое обновление пользовательского интерфейса должно выполняться в основном потоке и только в основном потоке. - person Satheesh; 04.04.2013