Я пытаюсь просто создать MBProgressHUD, показать его, запустить синхронизацию или асинхронный запрос, нажать новый контроллер на UINavigationController и удалить указанный MBProgressHUD. Однако HUD не появляется, пока данные не будут получены. Есть только мерцание HUD. Я попытался сделать это асинхронно, но это то же самое. Есть идеи?ASIHTTPRequest startSynchronous callback не отображается/скрывается MBProgressHUD до/после получения данных
ASIFormDataRequest* request = [ASIFormDataRequest requestWithURL:url];
[request setPostValue:@"occ_get_images_by_tag" forKey:@"action"];
[request setPostValue:[NSString stringWithFormat:@"%@", tag_id] forKey:@"tag_id"];
//HUD is a property of the UIViewController
HUD = [[MBProgressHUD alloc] initWithView:self.view];
[self.view addSubview:HUD];
HUD.delegate = self;
//Tried messing with this, making a message and changing onTarget: to self
//didn't work
[HUD showWhileExecuting:@selector(startSynchronous) onTarget:request withObject:nil animated:YES];
[request startSynchronous];
NSError* error = [request error];
if(!error){
NSArray* tempArr = [[request responseString] objectFromJSONString];
// Do some stuff
[self.navigationController pushViewController:imtv animated:YES];
[HUD removeFromSuperview];
}else{
NSLog(@"%@", [error description]);
}
Мое понимание того, как работает ASIHTTPRequest в том, что вещи, которые происходят, прежде чем startSynchronous действительно произойдет до того, как называется это сообщение. Затем все, что происходит внутри ошибки if (!), Произойдет после того, как данные будут получены и готовы к обработке. Кажется, что обратный вызов вообще не работает.
Также, если это какая-либо помощь, все это происходит в tableView: didSelectRowAtIndexPath :.
Удивительная благодарность! Я должен был поднять вопрос о потоке, в полной мере. Я изменил его на запрос asynch и использовал requestStarted: and requestFinished: чтобы показать/скрыть индикатор прогресса. Работает безупречно. – rnystrom