1

私がやろうとしていること: ユーザーがボタンを押すと、新しいビュー コントローラーが読み込まれ、ナビゲーション コントローラーにプッシュされます。

新しいビュー コントローラーは、ViedDidLoad メソッドでハード データベース クエリを実行しているため、ビューが読み込まれるまでに数秒かかります。

ビューの読み込みが開始される前に、待機インジケーターを表示しようとしています。

新しいビューが割り当てられる直前に開始ビューのサブビューとして UIActivityIndi​​catorView を追加しようとすると、新しいビューの読み込みが完了した後にインジケーターが表示されます...

また、データベースのクエリを ViewDidAppear メソッドに入れようとしましたが、結果は同じでした。

4

2 に答える 2

2

MBProgressHUDを見てください。実装は本当に簡単です。
主な問題は、すべての UI 変更をメイン スレッドで実行する必要があるため、比較的時間がかかるすべてのタスクをバックグラウンド スレッドで実行する必要があることです。
MBProgressHUD がこれを行います。カスタマイズしたい場合は、コードを変更するだけです。

于 2010-03-11T11:34:52.310 に答える
0

問題は、すべてのUI変更をアプリケーションのメインスレッドで実行する必要があることです。何かがメインスレッドをブロックする場合、UIの変更は適用されません(UIActivityIndicatorViewあなたの場合は表示されません)。

-performSelectorInBackground:withObject問題を解決するには、UIのメインスレッドを残して、バックグラウンドスレッドで(メソッドを使用するなど)データルーチンの読み込みを実行する必要があります。

于 2010-03-11T09:07:13.330 に答える