Я скачал некоторый код из http://github.com/matej/MBProgressHUD, чтобы показать индикатор выполнения при выполнении чего-либо.
Это код, который заставляет индикатор прогресса всплыть.
[HUD showWhileExecuting:@selector(myTask) onTarget:self withObject:nil animated:YES];
Это покажет индикатор прогресса во время работы метода myTask.
Странно то, что это также позволит продолжить выполнение программы ниже этой строки во время работы myTask. Это не то поведение, которое я хочу. Я хочу, чтобы индикатор выполнения отображался во время работы myTask, и только после того, как myTask завершит работу, я хочу, чтобы выполнение программы продолжалось ниже этой строки.
Это код для метода showWhileExecuting.
- (void)showWhileExecuting:(SEL)method onTarget:(id)target withObject:(id)object animated:(BOOL)animated {
methodForExecution = method;
targetForExecution = [target retain];
objectForExecution = [object retain];
// Launch execution in new thread
taskInProgress = YES;
[NSThread detachNewThreadSelector:@selector(launchExecution) toTarget:self withObject:nil];
// Show HUD view
[self show:animated];
}
Чтобы получить желаемое поведение, я должен отредактировать этот код или сделать что-то еще?
Я попытался обойти эту проблему, установив значение bool перед вызовом этого метода, что приводит к зависанию выполнения программы в цикле while сразу после того, как значение bool изменяется в конце myTask. Это работает, но по какой-то причине это приводит к тому, что счетчик появляется только на мгновение в конце, а не повсюду, как предполагалось. Почему это так?