我有一种方法可以从地址簿中获取联系人,并与他们一起做一些("getContactInformation").。
这个过程有点长(,几秒),在这个过程之后,我将显示一个新的ViewController。为了使它对用户友好,我想使用MBProgressHUD在进程开始时显示一个活动指示器,并在结束时隐藏它。
--这是最好的方法吗?--我已经测试过了:
MBProgressHUD *hud = [MBProgressHUD showHUDAddedTo:self.view animated:YES];
hud.labelText = @"Retrieving information...";
[self getContactInformation];
[MBProgressHUD hideHUDForView:self.view animated:YES];
[self presentViewController:newController animated:NO completion:nil];但是,它不工作,(它没有显示指示符)。有人能帮我吗?
提前谢谢你
发布于 2012-08-06 08:00:20
为[self presentViewController:newController animated:NO completion:nil];保留一个单独的方法。并尝试在某些特定延迟之后调用该方法。这应该是解决问题的办法。
发布于 2012-12-21 15:32:56
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
[self getContactInformation];
dispatch_async(dispatch_get_main_queue(), ^{
[MBProgressHUD hideHUDForView:self.mapView animated:YES];
});
});这将生成一个线程来运行getContactInformation,并且不会阻塞执行UI更改所需的主线程(例如显示HUD)。
我猜主线程被锁定时,你得到联系信息,没有时间更新,以显示HUD。一旦方法完成,它将再次获得主线程来更新UI (删除HUD)。
https://stackoverflow.com/questions/11820539
复制相似问题