2012-01-02 11 views
0

UIBarButtonItemの中にUIActivityIndicatorを使用していますが、表示が遅くなります。私はその後、NavigationItemのUIActivityIndi​​catorの表示が遅く

if(loading){ 
    [self.navigationItem setRightBarButtonItem:activityIndicator animated:true]; 
} else { 
    [self.navigationItem setRightBarButtonItem:nil animated:true]; 
} 

を使用して可視性をトグル

UIActivityIndicatorView *innerActivityIndicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(0, 0, 20, 20)]; 
[innerActivityIndicator startAnimating]; 
self.activityIndicator = [[UIBarButtonItem alloc] initWithCustomView:innerActivityIndicator]; 

を使用して作成しています、それは実際に表示され、私は理由は分からない前に、一般的には4または5秒かかります。もともとアニメーションを開始/停止していましたが、これもうまくいきませんでした。私はこの問題/ 2つのアプリケーションで効果があったので、私は何か間違っている必要があります。

+1

誤ってバックグラウンドスレッドでこれを実行している可能性はありますか? –

+0

私はそれを逃したとは思わない。もちろんそれは遅い応答を引き起こすでしょう。ありがとうございました。 – Echilon

答えて

0

Mark Adamsが指摘したように、問題はGCDを使用してインジケータをバックグラウンドスレッドに追加して削除することでした。

1

インジケータを絶えず追加したり削除したりするのではなく、表示したくない場合は単に非表示にしてください。あなたが好ましく、YESからhiddenNOを設定するかによってこれを行うことができますいずれか、YEShidesWhenStoppedを設定し、

if(loading){ 
    [self.activityIndicator startAnimating]; 
} else { 
    [self.activityIndicator stopAnimating]; 
} 

一つの先端が取るものは何でもアクションをやって前を回転activityIndi​​catorを開始することですしばらくしてから、アクションが完了したら停止してください。 activityIndi​​catorを開始する前に集中的なアクションを開始すると、遅延時間が説明される可能性があります。

+0

私はそれを試みましたが、私は質問でそれを言った。私は同じ効果を見る。 – Echilon

+0

@エチロン4〜5秒かかると書いたら、どうやって測定していますか? 'NSlog'を' if'文にドロップしましたか? – PengOne

+0

いいえ、私はそれが現われるのを見ているだけです。時には要求が他の時間よりも長くかかることがあります。また、データロードの呼び出しに 'NSThread sleepForTimeInterval:'を追加しようとしました。私はGCDを使って背景スレッド上で実際の作業をしています。 – Echilon

関連する問題