1

我的应用程序中有多个视图控制器。

从服务器下载数据时,我可以启动一个UIActivityIndicatorView.

但问题是对于三个不同的视图控制器,我需要创建三个不同的UIActivityIndicatorView.

我只想UIActivityIndicatorView在某个地方初始化一次,以便显示或隐藏它。无需创建或初始化UIActivityIndicatorView与视图控制器一样多的视图控制器。

我怎样才能做到这一点?任何帮助。

4

4 回答 4

1

像这样在 appdelgate 中的窗口上添加加载指示器

首先初始化你的加载视图

-(void)InitializeLoadingIndictor
 {
   loadingView = [[UIImageView alloc]initWithFrame:CGRectMake(300, 400, 150, 150)];
   [loadingView setBackgroundColor:[UIColor blackColor]];
   [loadingView setAlpha:0.6];
    [loadingView setHidden:YES];
   [loadingView.layer setCornerRadius:10];
    [_window addSubview:loadingView];
   loadingIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
   [loadingIndicator setFrame:CGRectMake(50, 50, 50, 50)];

  [loadingView addSubview:loadingIndicator];
}

然后创建两个方法两个隐藏和显示它

+ (void)showLoading
 {
  [loadingView setHidden:NO];
  [loadingIndicator startAnimating];
 }

把它藏起来

+ (void)hideLoading
 {
  [loadingView setHidden:YES];
 }

然后在您的视图控制器中,将其称为

    [AppDelegate showLoading];

完成后隐藏它

    [AppDelegate hideLoading];
于 2013-02-18T11:29:43.680 回答
0

谢谢你们的答案。下面的代码对我有用。

AppDelegate.m

-(void)StartLoading
{
    loader = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
    loader.frame = CGRectMake(50, 14, 20, 20);
    [loader startAnimating];
    [self.window addSubview:loader];
    [self.window bringSubviewToFront:loader];
}

-(void)EndLoading
{
    for(UIView *subview in [self.window subviews])
    {
       if(subview==loader)
         [subview removeFromSuperview];
    }
}
于 2013-02-19T10:01:40.760 回答
0

您可以使用自定义 UIAlertView 来显示您的指标。我制作了两个自定义文件,您可以使用它们来显示指标,而无需一次又一次地对其进行初始化。

文件是://头文件..

#import <UIKit/UIKit.h>

@interface ProgressIndicator : UIAlertView
{
    UIActivityIndicatorView *activityIndicator;
}

@end

//实现文件

#import "ProgressIndicator.h"

@implementation ProgressIndicator

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        activityIndicator=[[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
        // Initialization code
    }
    return self;
}


// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    [self addSubview:activityIndicator];
    [activityIndicator startAnimating];
    // Drawing code
}

@end

//在你的控制器中使用这个文件..

#import "ProgressIndicator.h"

ProgressIndicator *progressIndicator=[[ProgressIndicator alloc] initWithTitle:@"Loading" message:nil delegate:nil cancelButtonTitle:nil otherButtonTitles:nil];
[progressIndicator show];
于 2013-02-18T11:35:06.403 回答
0

请参考此https://github.com/jdg/MBProgressHUD链接。您将获得所有视图的自定义活动指示器。

于 2013-02-18T12:29:34.240 回答