1

ボタンアクションでビジーインジケーターを開始したいので、IB アクションで次のコードを使用します。

 busyIndicator = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
 busyIndicator.center = self.view.center;
 [busyIndicator setColor:[UIColor redColor]];
 [self.btnInjuryPrevention addSubview:busyIndicator];
 [self.view addSubview:busyIndicator]; // spinner is not visible until started

[busyIndicator startAnimating];
if(![AppStatus isAppOnline]) {
    noInternetViewController = [[NoInternetViewController alloc] initWithNibName:@"NoInternetViewController" bundle:[NSBundle mainBundle]];
    noInternetViewController.view.tag = CHILD_CONTROLLER_TAG;
    [self.navigationController pushViewController:noInternetViewController animated:YES];
    NSLog(@"Yoy are offline..>!!");
}
else
{
    mInjuryPreventionViewController=[[InjuryPreventionViewController alloc] initWithNibName:@"InjuryPreventionViewController" bundle:nil withHeader:@" Injury Prevention" withId:INJURY_PREVENTION_ID];
    mInjuryPreventionViewController.view.tag = CHILD_CONTROLLER_TAG;
    [self.navigationController pushViewController:mInjuryPreventionViewController animated:YES];
    //[mInjuryPreventionViewController release];
}
// [self removeLoadingView];
[busyIndicator stopAnimating];

上記のコードを使用していますが、ビジー インジケーターが起動しません。

4

3 に答える 3

4

1つのブロックでアニメーションを開始および停止すると、何も表示されません。startAnimatingこの方法は、「制御がOSに戻ったときにアニメーションを開始する」という意味と考えることができます。

なぜそこにスピナーが必要なのかは明らかではありません。ビューコントローラの作成には時間がかかりますか?それでも、View Controllerを新しいメソッドに移動すると、次のようなことができます。

...
// create busy indicator
[busyIndicator startAnimating];
[self performSelector:@selector(createViewController) withObject:nil afterDelay:0]; 

...

// at the end of the createViewController method...
[busyIndicator stopAnimating];
于 2012-07-25T10:53:17.493 に答える
1

私があなたの与えられたコードから最初に理解しているように、あなたはいくつかの UIViewController にいて、あなたはあなたの UIActivityIndi​​catorView を追加しているところで、結局、他の2つの UIViewController を初期化する2つの条件 if-else を作っています。追加したとおりに表示されます

    [self.view addSubview:busyIndicator]; // spinner is not visible until started

if ステートメントで実行する関数を定義してください。

コーディングを続ける

于 2012-07-25T10:45:54.530 に答える
0

単一のメソッドで busuInde​​cator を開始および停止しているため、長い処理は必要ありません。両方の関数がミリ秒単位で実行されるため、UI で busyIndecator を確認できません。UI に busyIndecator または任意のアウトレットを表示します。人間が認識できる期間があるはずです。お気に入り:

[busyIndicator startAnimating];
//Do EXTREME PROCESSING!!!
[busyIndicator stopAnimating];
于 2015-06-18T17:46:01.180 に答える