2

ユーザーが行をクリックすると、テーブルビューを備えた非常に単純なナビゲーションコントローラーであるアプリケーションに取り組んでおり、詳細ビューに移動します。

ただし、詳細ビューは Core Data からデータを取得します。読み込みに約 3 秒かかる比較的大量のデータを取得しています。

進行状況を表示するために、その UIActivityIndi​​catorView を追加したかったのです。

ユーザーが行をクリックするとアニメーションを開始しようとしたので、didSelectRowAtIndexPathでアニメーション化するように設定しました

何らかの理由で、詳細ビューをプッシュする前にアクティビティ インジケーターが開始されません。

理由はありますか?またはそのようなアイデアを実装するための最良の方法は?

〜アドハム

4

3 に答える 3

3

アニメーションを開始してから、同じスレッドで大きな操作を開始するためです。その 3 秒の操作を新しいスレッドで実行することを検討してください。を見て、その手順を実行するNSOperationQueueために作成します。NSOperationこのように動作します。

于 2009-11-13T23:40:26.700 に答える
1

UI は、実行ループが終了するまで更新されません。順番に、アクティビティ モニターを表示し、次に新しいテーブル ビューをプッシュし UI を更新します。この順序を変更する必要があります。

何かを別のスレッドに移動するかperformSelector:afterDelay:、遅延 0 で呼び出して新しいテーブル ビューの読み込みを遅らせることができます。これにより、アクティビティ インジケーターが UI に表示されるまで、新しいテーブル ビューの読み込みが遅れます。今でもすべて同じスレッド上にあるため、何もできませんが、アニメーションがアクティビティ モニターにスレッド化されている場合は、すばやく簡単に解決できます。

于 2009-11-13T23:42:35.880 に答える
1

スレッドでメソッドを呼び出します:

[NSThread detachNewThreadSelector: @selector(loadMethod) toTarget:self withObject:nil];

詳細については、以下を参照してください:
http://iphone.zcentric.com/?s=UIActivityIndi​​catorView

于 2009-11-24T11:25:32.657 に答える