1

プログラムの一部には表示されるが、別の部分には表示されないUIActivityIndi​​catorを実装しました。テーブルの読み込み中にアクティビティインジケーターが表示されますが、ユーザーがボタンをクリックしてテーブルが再読み込みされるのを待った後、アニメーションを再開しようとしています。テーブルはリロードされますが、インジケーターはありません。これがコードです。

- (void)viewWillAppear:(BOOL)animated {
    CGRect frame = CGRectMake (120.0, 185.0, 80, 80);
    activity = [[UIActivityIndicatorView alloc] initWithFrame: frame];
    activity.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;
    [activity startAnimating];

    [navigationUpdateFromDetail.window addSubview: activity];

    [super viewWillAppear:animated];
}

その部分に出てきます。しかし、次の部分では、それは出てきたくないようです。

- (IBAction) btnGreaterTen_clicked :(id)sender {

    self.searchDistance = [NSNumber numberWithDouble : 10];

    CGRect frame = CGRectMake (120.0, 185.0, 80, 80);

    activity = [[UIActivityIndicatorView alloc] initWithFrame: frame];
    activity.activityIndicatorViewStyle = UIActivityIndicatorViewStyleGray;

    [navigationUpdateFromDetail.window addSubview: activity];
    [activity startAnimating];


    NSLog(@" search value after change %@", [searchDistance description]);

    [self getSetDisplay];

    [activity stopAnimating];
}

そのボタンは変数を変更し、アニメーションを開始することを想定していますが、そうではありません。ただ溶け込んでいないことを確認するために色を変更したので、それは解決策ではありません。同じオブジェクトを再作成しようとしましたが、それでもうまくいきませんでした。前もって感謝します。

4

3 に答える 3

2

アニメーションはメインアプリケーションループが「実行中」のときにのみ表示されるため、これは機能しません。コードでは、[selfgetSetDisplay]を呼び出してメインスレッドをブロックしています。

これを機能させるには、データを非同期でロードする必要があります(バックグラウンドスレッドで)。次に、 startAnimatingを呼び出してスレッドを開始し、スレッドが終了したらアニメーションを停止します。

于 2009-12-31T08:15:26.137 に答える
1

これは何年もの間私を悩ませてきました、そして私は検索ディスプレイコントローラーを使用するときそれを表示させるために検索結果のサブビューとしてアクティビティインジケーターを追加しなければならないことに気づきました。私のviewDidLoadに、私は...

// create activity indicator
activityIndicator = [[UIActivityIndicatorView alloc]initWithFrame:CGRectMake(0.0f, 0.0f, 32.0f, 32.0f)];
[activityIndicator setActivityIndicatorViewStyle:UIActivityIndicatorViewStyleGray];
[self.searchDisplayController.searchResultsTableView addSubview:activityIndicator];

アニメ化を始めたいときは…

[activityIndicator setCenter:CGPointMake(self.searchDisplayController.searchResultsTableView.frame.size.width/2.0f, self.searchDisplayController.searchResultsTableView.frame.size.height/2.0f)];
[activityIndicator startAnimating];

これが誰かを助けることを願っています。

于 2012-09-26T16:24:47.660 に答える
-1

追加してみてください

activity.hidden = NO;

直前

[activity startAnimating];
于 2009-12-31T08:14:58.647 に答える