2011-12-16 14 views
1

私のFirstViewControllerにはIBActionがあり、SecondViewControllerを呼び出します。彼ViewDidLoad負荷のViewController間のUIActivityIndi​​catorView

SecondViewControllerFirtsViewControllerSecondViewController間の遷移時間が長いのでこのような理由のためにサーバからアレイ。

をに入れたいときは、IBAction yを押してアニメーションすると、表示間の遷移が終了すると停止します。

¿いくつかのアイデア?

ありがとうございます。

ベストウェスタン

答えて

2

データを非同期に読み込む必要があります。次のようなものがあります。

// second view controller 
- (void)viewDidLoad 
{ 
    // show loading activity (e.g. UIActivityIndicatorView) 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     [self loadDataFromServer]; 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      // hide loading activity and refresh view with loaded data 
     }); 
    ); 
} 
0

サーバーコールを別の方法で書き込みます。 2番目のViewコントローラのviewDidLoadでは、バックグラウンドスレッドでこのサーバーメソッドを呼び出します。また、アクティビティインジケータでビューを表示することもできます。一方、サーバーメソッドでは、呼び出しが完了したら、アクティビティインジケータを隠し、必要なものを2番目のView Controllerに表示するメインスレッドのコールバックメソッドを呼び出します。

1

このため、最初のViewControllerまたは2番目のViewControllerにアクティビティインジケータを追加する必要があります。

または別のオプションは、このような第2のビューコントローラをロードするためのタイマーを入れて、

-(void)viewDidLoad  
{  
    timer = [NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(firstAPICall) userInfo:nil repeats:NO];  
} 

上記のコード行から画面がすぐに移動した後、サーバーからデータをロードします。 "firstAPIcall"メソッドの使用。

0

どの表示が表示されているかにかかわらず、アクティビティインジケータが表示されていても、常にそのアクティビティインジケータが表示されます。 そのためには、あなたはここにいることについて読むことができ、活動の指標と透視図を作成する必要があります。 http://ramin.firoozye.com/2009/09/29/semi-modal-transparent-dialogs-on-the-iphone/

0

あなたはこのように行うことができます。

あなたSecondViewControllerのviewDidLoad

での.hに.Mファイルに

@interface SecondViewController 
{ 
    UIActivityIndicatorView *activityView; 
} 

@property (nonatomic, retain) UIActivityIndicatorView *activityView; 

@end 

ファイル

@synthesize activityView; 

- (void) viewDidLoad 
{ 
    self.activityView = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(125, 80, 30, 30)]; 
      self.activityView.hidesWhenStopped = YES ; 
    [self addSubview:activityView]; 
    activityView.activityIndicatorViewStyle = UIActivityIndicatorViewStyleWhiteLarge; 
    [activityView startAnimating]; 

    [self performSelector:@selector(getData) withObject:nil afterDelay:0.1]; 

} 

- (void) getData 
{ 
    // code for server call 
    . 
    . 
    // as downloading get complited 

    [self.activityView stopAnimating] 
} 
関連する問題