Добавление обратного вызова завершения для MBProgressHUD

Я хотел бы добавить обратный вызов завершения в свой метод, чтобы прогресс HUD знал, что он завершен.

MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.mode = MBProgressHUDModeAnnularDeterminate;
hud.labelText = @"Loading";
[self doSomethingInBackgroundWithProgressCallback:^(float progress) {
hud.progress = progress;
} completionCallback:^{
[MBProgressHUD hideHUDForView:self.view animated:YES];
}];

Что мне нужно добавить к моему методу, чтобы убедиться, что он завершен, или вызвать этот метод завершенияCallback сверху?

В этом случае мой метод может быть любым, например:

-(void)doSomethignInBackgroundWithProgressCallback {
sleep(100);
}    

person StuartM    schedule 30.08.2012    source источник


Ответы (1)


В случае HUD вы можете использовать его delegate функцию hudWasHidden, которая будет, когда вы используете HUD следующим образом:

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

и если вы хотите знать, как использовать callbacks в objective c, следуйте этому сообщению -

http://stackoverflow.com/questions/1015608/how-to-perform-callbacks-in-objective-c

метод обратного вызова завершения -

- (void) doSomethingInBackground:(void (^) (void)) completion
{
    // do your job here

    completion();
}
person saadnib    schedule 30.08.2012
comment
Использование showWhileExecuting не увеличивает прогресс индикатора выполнения в HUD, хотя правильно? Я полагаю, для чего предназначена обратная связь? - person StuartM; 30.08.2012
comment
вы говорите о прогрессе просмотра HUD, тогда вы можете увеличить прогресс с помощью showWhileExecuting. - person saadnib; 30.08.2012
comment
да, если я использую только showWhileExecuting (метод), тогда прогресс для режима AnnularDeterminate HUD, индикатор выполнения в HUD вообще не увеличивается ... Я предположил, что использование вышеуказанного стиля с обратным вызовом для завершения обновит процесс. - person StuartM; 30.08.2012
comment
Можете ли вы помочь с обратным вызовом в приведенном выше примере кода для этого? - person StuartM; 30.08.2012