1年ほど経ってiOS開発に戻ったばかりで、UITabViewControllerビューの上または下に単一のビューを表示する方法を探しています。アイデアは、各タブに 1 つではなく、アプリ全体で使用される 1 つの広告ビューを持つことです。広告ビューを常に再初期化することは、オーバーヘッドが大きいように思われるため、1 つ永続化する方が効果的と思われます。
私はこれを検索しましたが、何も見つけられなかったので、有用なリンクでもありがたいです.
前もって感謝します、ジェイソン
親View Controllerを作成し、各View Controllerがその親View Controllerから継承するのはどうですか? 親ビュー コントローラーには広告ビューまたはテーブル ビューがあるため、すべての子ビュー コントローラーにもこれら 2 つのビューがあります。
ここにいくつかのアプローチがあります:
アプリケーションのデリゲートでビュー階層を設定しているので、アプリのデリゲートとは別に作成してUIViewController
管理することをお勧めします。そうすれば、多くの作業を行うことなく、メインの UIWindow で表示/非表示を切り替えることができます。
表示されているビュー コントローラーで広告をサブクラスUITabBarController
化して表示できます。これは手間がかかりますが、アプリ デリゲートが広告関連のコードで雑然としないため、アプリ アーキテクチャはほぼ間違いなくクリーンになります。
UIViewController
別のオプションは、関連するコードの追加を管理できるカテゴリを調べることです。必ずしも最もクリーンではありませんが、アプリ デリゲートとタブ バー コントローラーの両方から広告を排除します。(ランタイム レベルの呼び出しを介してカテゴリ プロパティとして広告ビューを追加し、オブジェクトを関連付けますが、面倒です。)
私だったらおそらく最初のアプローチを使用するでしょうが、広告ビューはそれ自体のビュー コントローラーを実際に必要としないため、他の 2 つのアプローチのいずれかについて議論することができます。
さて、このためのカスタマービューコントローラーの作成と管理に時間を費やした後、AppleがiOS5に追加したContainerViewController機能に出くわしました。iOS4以前をサポートする必要がないので、これは私にとってはうまくいきます。ここにそれの良い説明があります(残念ながら、作者はチュートリアルでパート2を書いたことはありません):
そして、まともなチュートリアルがここにあります:
ContainerViewControllerチュートリアル
これらの2つの間で、Container View Controllerに含まれるAdViewControllerとBodyViewController(TabBarController)を使用して適切なセットアップを作成することができました。これにより、必要なすべての機能が得られます(少なくともこれまでのところ)。