3

UIActivityIndi​​cator に関して問題があります。[spinner startAnimating]ボタンの IBActionに適用してから、いくつかのプロセスを実行しました。プロセス アクティビティ インジケーターが停止した後、別のビューに移動します。ただし、アクティビティ インジケータは表示されません。「[spinner stopAnimating]」の行を削除すると、インジケーターは表示されますが、ボタンが押された瞬間には表示されません。他のビューが読み込まれる直前に表示され、明らかに表示されない、つまり表示されないということですが、よく見ると一瞬だけ表示されます。

事前に答えてくれてありがとう。

4

4 に答える 4

11

Ole はほとんど正しいですが、同期処理を気にしないというトリックがあります (多くの場合、最初にアクティビティ インジケーターを表示したい理由です)。

まず、スピナーが独自のメソッドを実行している間に、処理するコードを移動します。それからする

[spinner startAnimating];
[self performSelector:@selector(methodname) withObject:nil afterDelay:0];

afterDelay:0 は、次回の実行ループを意味します。このようにして、スピナーが開始されます。

于 2010-05-27T09:40:07.360 に答える
4

コードが制御を実行ループに戻すまで、アニメーションは開始されません。処理タスクがメイン スレッドをブロックする場合、終了するまで UI の更新は行われません。処理を非同期で行う必要があります (たとえば、 を開始してNSOperation)。

于 2010-05-27T09:26:44.880 に答える
4

perform selector で実行する必要があります。

例:

[self performSelector:@selector(animation) withObject:nil afterDelay:0]

-(void)animation

{

NSAutoreleasepool *pool = [[NSAutorepleasepool alloc]init];

[indicatorView startAnimating];

[pool release];

}
于 2010-05-27T09:48:18.010 に答える
0

これは古い質問です。私はここに私の答えを残しているので、誰かが問題を解決するのに役立つかもしれません.

于 2011-09-18T07:36:02.357 に答える