我正在同时拨打两个网络服务,我当时正在显示活动指示。由于任何一项服务都可以先结束。我不知道如何隐藏活动指标。我想用旗帜。但我不确定这是否是更好的方法。请帮助我采取更好的方法。
答案 0 :(得分:0)
一种简单的方法是使用AFNetworking库,它为您处理NetworkActivityIndicator。您只需要设置[[AFNetworkActivityIndicatorManger sharedManager] setEnabled:YES];在你的app delegate中。
否则,保持计数器是一个很好的方法。当您启动每个Web请求时,只需递增计数器并减少成功或失败块中的计数器。在这些块中,在递减计数器之后,如果计数器等于零,则将[UIApplication sharedApplication]的isNetworkActivityIndcatorVisible属性设置为NO。
答案 1 :(得分:0)
You need to create a method in AppDelegate.m class
#pragma mark activity indicator view
-(void)showActivityViewer:(NSString* )msg
{
if (activityView1 == nil)
{
[activityView1 release];
activityView1 = [[UIView alloc] initWithFrame: CGRectMake(0, 0, 320, 580)];
activityView1.backgroundColor = [UIColor darkGrayColor];
activityView1.alpha = 0.8;
UILabel* lblLoading=[[UILabel alloc] initWithFrame:CGRectMake(70, 260, 180, 60)];
lblLoading.numberOfLines=0;
lblLoading.text=msg;
lblLoading.backgroundColor=[UIColor clearColor];
lblLoading.textAlignment=UITextAlignmentCenter;
[lblLoading setContentMode:UIViewContentModeBottom];
lblLoading.textColor=[UIColor whiteColor];
[activityView1 addSubview:lblLoading];
[lblLoading release];
UIActivityIndicatorView *activityWheel = [[UIActivityIndicatorView alloc] initWithFrame: CGRectMake(self.window.bounds.size.width / 2 - 15, self.window.bounds.size.height / 2 - 30, 30, 30)];
activityWheel.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhite;
activityWheel.autoresizingMask = (UIViewAutoresizingFlexibleLeftMargin |
UIViewAutoresizingFlexibleRightMargin |
UIViewAutoresizingFlexibleTopMargin |
UIViewAutoresizingFlexibleBottomMargin);
[activityView1 addSubview:activityWheel];
[activityWheel release];
}
[self.window addSubview: activityView1];
[[[activityView1 subviews] objectAtIndex:0] setText:msg];
[[[activityView1 subviews] objectAtIndex:1] startAnimating];
}
每当您需要在整个过程中显示活动指示器时......它会自动管理所有事物
隐藏指标调用此方法,与AppDelegate.m类相同
-(void)hideActivityViewer
{
[[[activityView1 subviews] objectAtIndex:1] stopAnimating];
[activityView1 removeFromSuperview];
}
答案 2 :(得分:0)
试试这个。
在[self.window addSubview: activityView1]
activityView1.tag = 110;
(您也可以设置110以外的任何数字)
并编写以下代码以删除:
for(UIView *viewActivityIndicator in [[UIApplication sharedApplication] keyWindow].subviews)
{
if(viewActivityIndicator.tag == 110)
{
[viewActivityIndicator removeFromSuperview];
}
}
如果没有特殊要求而不是使用某些库而不是管理自己。
一些好的例子:
1. SVProgressHUD
2. MBProgressHUD