2012-02-08 21 views
2

私のアプリケーションのビュー階層には、UIWebViewを含むUIViewControllerサブクラスが存在するルートUINavigationControllerがあります。アプリケーションが起動するとすぐに、Webビューの終了ロードデリゲートメソッドが呼び出されるまで、全画面読み込みビューコントローラーでナビゲーションコントローラービュー全体を非表示にします。 - これは、ナビゲーションのビューと干渉するすることは非常にハック感じフルスクリーン "モーダル"ローディングビューを表示

  • UINavigationControllerビューにサブビューを追加します。私は「右に感じる」どちらも2つの方法の一つと考えられてきた、これを達成するために

    コントローラー

  • ルートレベルからモーダルビューコントローラーを表示 - これを呼び出す前にviewDidAppearまで待たなければなりません。これにより、表示前に下位VCの醜いフラッシュが発生します。順番に、特定の状況でローディングVCは独自のモーダルを提示します。つまり、ルートVCの上にモーダルの上にモーダルを持つことを意味します。

私は完全に怒っているのですか、それともこのアプリケーションフローを達成するための特に簡単な方法ではありませんか?

答えて

1

多少「エレガントな」アプローチ:ロードする必要のあるUIWebViewを含む共有シングルトンクラスを作成し、アプリ。一方、プリローダー画面を表示します(最初にアプリケーションが起動するとナビゲーションスタックに追加されます)。リクエストのロードが完了したら、NSNotificationセンターを介してAppDelegateにロードされたUIWebViewコントローラにプッシュ/スイッチする通知を送信します。

+1

これは、UIViewController間でWebビューを「共有」し、適切なタイミングでウィンドウのrootViewControllerをスワップアウトする最も洗練されたソリューションです。 – andybee

0

UIWebViewでバックグラウンドで何が起こっているのかを完全に隠す必要がありますか?このユーザーエクスペリエンスを達成するのに十分なブロッキングアクティビティ指標はありませんか?もしそうなら、私は多くの素晴らしいアクティビティ指示コンポーネントの1つをオンラインで利用できるようにすることをお勧めします。MBProgressHUD

+0

正直言って私はあなたに同意します - しかし、フルスクリーンのグラフィックを要求しているクライアントのデザインを実装しようとしています(基本的に、Default.pngがセットアップ中の優雅なトランジションのように見えるものを複製するUIViewController)。 – andybee

+0

クライアントは私たちの終わりになるでしょう... "優雅"がこのように達成できないことを知っていることを確認してください:) [UIApplication sharedApplication] .keyWindowにサブビューを追加することができます。 (これはナビゲーションアニメーションを妨害するので、これは醜いかもしれませんが、サブビューとして追加してから、位置/アルファをアニメーションして、少し上に見えるようにすることができます)。ウェブビューの読み込みが完了したら解読できるように、参照を保存してください。 – Stavash

+0

Spooky、これはあなたの最後のコメントを読んだ後、私の考えが動いた場所です!これについての私の心配は、常に複数のビューコントローラを使用していましたが、このロードVCが意図的に他のビューの可視性をブロックしている場合は、現実的に懸念されますか? – andybee

関連する問題