我试图简单地创建一个 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: 中。