2012-01-14 14 views
0

私のアプリは起動時にオンラインplistを読み込んでいます。これは表示されるテーブルビューにデータを表示するために必要です。インターネット接続によっては、plistのロードに時間がかかり(4〜5秒)、起動画面にこの時間が表示されます。さて、私はステータスバーに(起動画面がまだアップしている間に)アクティビティインジケータを入れて、アプリがビジーロード中であることを知るようにしたいと思います。起動時にplistをロードするのに時間がかかります。アクティビティインジケータを表示するには?

ViewDidLoadでplistを読み込んで配列などを作成していますが、上に示したことをどのように達成するかについてはわかりません。

この問題についてご意見はありますか?ありがとう。

答えて

2

私があなたの場合、あなたのアプローチを再考したいと思います。あなたが具体的にそれを避ける手段を入れていない限り、plistをダウンロードするコードはapplicationDidFinishLaunching:が返される前に呼び出されている可能性があります。これは長時間かかるとウォッチドッグが実際に正しく起動される前にアプリを強制終了する可能性があるため、これはうまくいかない。良いことではありません。

あなたは実際にバックグラウンドスレッドでダウンロードを開始し、実際の表示にスピナーを付けるだけです。だからこのようなもの:

- (void)viewDidLoad { 
    ... 

    UIActivityIndicatorView *spinner = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge]; 
    spinner.center = CGPointMake(self.view.bounds.size.width/2.0f, self.view.bounds.size.height/2.0f); 
    [spinner startAnimating]; 
    [self.view addSubview:spinner]; 

    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
     // Do your downloading of your plist, etc 
     dispatch_async(dispatch_get_main_queue(), ^{ 
      [spinner removeFromSuperview]; 
     }); 
    }); 
} 
+0

あなたは素晴らしいです! – user1048042

関連する問題