MBProgressHUDを作成して表示し、同期または非同期リクエストを開始し、UINavigationControllerに新しいコントローラーをプッシュし、MBProgressHUDを削除しようとしています。ただし、HUD はデータを受信するまで表示されません。HUDのちらつきだけあります。これを非同期でやってみましたが、まったく同じことができました。何か案は?
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(!error) 内のすべてが発生します。コールバックがまったく機能していないようです。
また、それが役立つ場合、これはすべて tableView:didSelectRowAtIndexPath: で行われます。