2009-03-03 15 views
1

私のUITabBarControllerのタブの1つが表示されるまでに時間がかかります。UITabBarControllerタブを選択する前に「Now Loading」を追加しますか?

viewcontrolerが作業を完了する前に「Now Loading」を表示するにはどうすればよいですか?

私はタブのviewControllerのviewDidLoadメソッドで "now loading"ビューを設定しようとしましたが、次にviewDidAppearを通して次回に再び作業しないようにフラグを設定して、viewDidAppearで作業を行います。

しかし、私は "今読み込んでいる"ビューを見ることはありません...いくつかの最適化が行われている必要があります - ViewControllerのviewDidAppearはTabBarControllerDelegate didSelectViewControllerの前に呼び出されます。

viewcontrollerが表示される前にプレースホルダビューが表示されるようにするUITabBarControllerメカニズムはありますか?

アイデア?

は、私が間違っているかもしれないが、おそらくあなたの問題はビューが更新されないようにviewDidAppearで時間のかかる作業を行うことによって、あなたがメインのイベントスレッドをブロックしているということです マット

答えて

1

ここで使用するための技術が、これは次のとおりです。

  1. は( 実際のロードを行うために、新しいスレッドを生成し、あなたの コントローラのviewWillAppear:または viewDidLoad:方法
  2. に「ロードビュー」を設置しました何時でも 処理中)
  3. 完了したら、 コントローラにメッセージを送信します(たとえば、デリゲート パターンを使用)。 「ロード」は、特定のビューコントローラがビジー状態であっても、ロードビューを削除し、 この方法は、アプリケーション・インターフェースがまだ使用可能なままにそれをやって、ユーザーが

進みましょう、最終的には

  • が行われます。

    これを行う方法はありません。自分でコードを作成する必要があります。

  • 2

    をyou-がありがとうございました仕事が完了するまで私。あなたはviewWillAppearで "now loading"を設定しますが、viewDidAppearが完了するまでにはそれは見えません。

    2

    NSObjectのperformSelector:withObject:afterDelay:メソッドはここで便利です。 「Please wait」アラートを表示するか、何かを表示してから、performSelector:withObject:afterDelay:を使用して実際の作業を開始します。あなたの読み込みは、イベントループの次の実行後まで遅延されます。その時間までにユーザーインターフェイスは再描画されます。

    関連する問題