1

アプリケーションに複数のビュー コントローラーがあります。

サーバーからデータをダウンロードしているときに、UIActivityIndicatorView.

しかし、問題は、3 つの異なるビュー コントローラーを作成する必要があること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];
}

次に、2 つのメソッドを作成し、非表示にして表示します

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

隠す

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

次に、View Controllerで次のように呼び出します

    [AppDelegate showLoading];

そして、あなたが終わったらそれを隠すために

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

カスタムUIAlertViewを使用してインジケーターを表示できます。何度も初期化せずにインジケーターを表示できる2つのカスタムファイルを作成しました。

ファイルは次のとおりです。//ヘッダーファイル。

#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

答えてくれてありがとう。以下のコードは私にとってはうまくいきます。

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

このhttps://github.com/jdg/MBProgressHUDリンクを参照してください。すべてのビューのカスタム アクティビティ インジケーターを取得します。

于 2013-02-18T12:29:34.240 に答える