Удаление MBProgressHUD, когда отображается диалоговое окно и метод выбора не завершен
Я использую код для вызова метода и отображения HUD, как показано ниже
HUD = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:HUD];
HUD.delegate = self;
HUD.labelText = @"Signing you up";
// myProgressTask uses the HUD instance to update progress
[HUD showWhileExecuting:@selector(processFieldEntries) onTarget:self withObject:nil animated:YES];
В рамках processFieldEntries у меня есть проверка ошибок, которая затем показывает диалог. Как ниже:
showDialog:
if (textError) {
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:errorText message:nil delegate:self cancelButtonTitle:nil otherButtonTitles:@"Ok", nil];
[alertView show];
return;
}
Это затем вызывает сбой, возможно, потому что они находятся в одном потоке или не удаляют HUD из представления.
Мой вопрос должен ли я добавить другой код, чтобы убедиться, что они работают в разных потоках? И что я должен добавить в метод processFieldEntries, чтобы затем удалить HUD, как он называется showWhileExecuting...
1 ответ
Решение
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.delegate = self;
hud.labelText = @"Signing you up";
dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, 0.05 * NSEC_PER_SEC);
dispatch_after(popTime, dispatch_get_main_queue(), ^(void){
[self processFieldEntries];
// Do something...
[MBProgressHUD hideHUDForView:self.view animated:YES];
});