1

私のアプリでは、データベースからデータを取得しています。データベースから取得したデータは、20000 レコードのように非常に大きいです。そこで、データが読み込まれていることを示すアクティビティ インジケーターを表示したいと思います。しかし、アプリを実行してもアクティビティ インジケーターは表示されません。

このためのコードを送信しています。私を助けてください。

activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];

activityIndicator.frame = CGRectMake(100,100, 20, 20);
[self.view addSubview:activityIndicator];

[activityIndicator startAnimating];

// Code to get data from database

[activityIndicator stopAnimating];
4

3 に答える 3

3

まず、activiyIndi​​cator のフレームを設定する必要はありません。あなたはただ中心を設定することができます...

activityIndicator.center = self.view.center; (or soemthing like this).

第二に、どのようにデータを取得していますか? すべてメインスレッドで実行していますか?それとも非同期でやっていますか?

::編集::

ああ、あなたはこれをやっているようです...

[actInd startAnimating];
[self getData];  //this is asynchronous
[actInd stopAnimating];

この場合、stopAnimating はほぼ即座に呼び出されます。

あなたが必要とするのは、このようなものです...

[actInd startAnimating];
[self getData];  //this is asynchronous

次にgetDataで...

- (void)getData
{
    //get all your data and process it....

    [actInd stopAnimating];
}

このようにして、アニメーションの停止は、すべてのデータ作業を行った後にのみ呼び出されます。

それでもうまくいかない場合は、stopAnimating を完全に削除して、最初に実際にアニメーション化されていることを確認してください。

于 2012-09-25T12:33:55.217 に答える
0

これを行う:

activityIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleWhiteLarge];
activityIndicator.center = self.view.center; 
[self.view addSubview:activityIndicator];
[NSThread detachNewThreadSelector:@selector(startActivityIndicator) toTarget:self withObject:nil];

このメソッドを追加します。

-(void)startActivityIndicator
{
  NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
  [activityIndicator startAnimating];
  [pool release];
}

変更を行う:

- (void)getData
{
  //get all your data from database.
  [activityIndicator stopAnimating];
}
于 2012-09-25T12:38:06.000 に答える
0

@Fogmeister は activityIndi​​cator のフレームを設定することについてライトです。

activityIndi​​cator を表示するには、質問に示されているコードの関数を 1 つ作成しperformSelector:withObject:afterDelay:、0.001 の遅延を使用して呼び出すと、activityIndi​​cator が表示されます

ハッピーコーディング:)

于 2012-09-25T12:42:32.920 に答える