0

私は奇妙な問題を抱えています.私はボタンを持っています.ボタンを押すと私はやっています.

以下

- (IBAction)btnPressed:(id)sender {

    [ _spinner startAnimating];//where _spinner is a ActivityIndicator

    [self showResult];

}

-(void) showResult{

    sleep(10);

    resultText.text=@"Hi..Sorry.It has been a long wait";

}

しかし、showResult メソッドが呼び出されても、スピナーはアニメーションを開始しません。

ちゃんと。これは非常に奇妙に感じます。[_spinner startAnimating] を viewDidLoad に入れると

それは完璧に機能します。どんな助けでも大歓迎です。

4

2 に答える 2

2

メインスレッドでsleepメソッドが呼び出されると、UIがハングします。そのため、アクティビティインジケーターが表示されません。

これを行う1つの方法:

- (IBAction)actionbuton:(id)sender {

    [_activity startAnimating];

    [self performSelectorInBackground:@selector(backgroundProcess) withObject:nil];
}

- (void) backgroundProcess{

    sleep(4);
    [self performSelectorOnMainThread:@selector(processingDone) withObject:nil waitUntilDone:NO];
}

- (void) processingDone{

    [_activity stopAnimating];
}
于 2012-11-28T11:54:26.943 に答える
0
  1. まず、ボタンを押す方法でアクティビティを開始します。
  2. 次に、タイマーで showResult メソッドを呼び出します。
  3. それがあなたの問題を解決すると思います。
  4. また、showResult から Sleep を削除します。
于 2012-11-28T12:06:48.867 に答える