Как показать MBProgressHUD на iPhone, не создавая новых тем? - PullRequest
1 голос
/ 28 сентября 2011

Я хочу показать MBProgressHUD в своем приложении для iPhone, не создавая новых тем.

У меня очень сложный набор бизнес-логики, который иногда (но не всегда) должен ждать ввода пользователя, а выполнение в нескольких потоках приводит к тому, что пользователь запрашивает ввод несколько раз одновременно, что приводит к сумасшедшим ошибкам.Поэтому я бы предпочел не запускать что-либо вне основного потока.Однако из-за этого ограничения MBProgressHUD не отображается, поскольку основной поток блокируется!Обычно я создаю свой MBProgressHUD с помощью следующего кода:

[HUD showWhileExecuting:@selector(myWorkerMethod) onTarget:self withObject:nil animated:YES];

Но я хотел бы использовать следующий код без блокировки основного потока:

HUD = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:HUD];
HUD.delegate = self;
HUD.minShowTime = 0.0;
HUD.labelText = @"some text";
[HUD show:YES];

Есть мысли?

Ответы [ 2 ]

3 голосов
/ 17 декабря 2011

Как насчет этого?

MBProgressHUD *HUD = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
HUD.labelText = @"Foo";
// code to execute synchronously
[MBProgressHUD hideHUDForView:self.view animated:YES];
1 голос
/ 10 апреля 2012

Лучше поздно, чем никогда. Вы можете сделать это с некоторым тиккером цикла выполнения. См. этот ответ для деталей.

...