2012-01-11 3 views
1

に私はiPadのアプリケーションを開発していると私は他のビューに関してで一番上に常にUIViewを作成する必要があります。UIViewのサイドバーは常にトップ

Aは私がUIViewControllerたビューを作成する必要があるエリアは、(サイドバーの一種としてそれを考慮して)一番上に常に残っています。 Bはその代わりに、UIViewController(そのビューを含む)が変更可能なコンテンツエリアです:いくつかのボタンアクション(Aのビュー内)に応じて、現在表示されているコンテンツ(この場合はコントローラBとビュー)を削除し、他のコントローラ(C、D、Eなど)が表示されます。

私は自分のアプリケーションのためのすべての要素を作成したが、私は上にAの見解を維持し、同時に、dinamcallyコンテンツ領域を変更するために使用されるロジックを実装するための問題を抱えています。要件として私はAが常にBと重なる必要があります。言い換えれば、Bの一部(左側の部分)は常にAの領域の下にあります。Bは常にデバイス画面全体を拡張します。

私にいくつかアドバイスをいただけますか?

私は2つのコンフィギュレーションを作ったが、私は彼らとの問題を抱えています。

第1の構成

最初のもので、私はA(SideBarControllerと呼ばれる)のためUIViewControllerを作成しました。私はビューをUIWindowに追加しました(アプリケーションデリゲート内)。次に、BのUIViewControllerHomeViewController)を作成し、私のアプリケーションにrootViewControllerとして追加しました。

私のアプリケーションデリゲートを通じてコン​​テンツ領域を変更(新しくrootViewControllerに設定)することができますが、SideBarControllerは常に現在のビジュアルビューの下にあるため、この解決策は有効です。二一

第2の構成

、私は(MainViewControllerと呼ばれる)UIViewControllerを作成し、私は自分のアプリケーションのためのrootViewControllerとしてこれを追加しました。次いでMainViewController内Iは、A(SideBarController呼ばれる)のためにUIViewControllerを作成し、IはMainViewControllerSideBarControllerビューを追加しました。その後、内容領域が塗りつぶされてB(HomeViewControllerと呼ばれる)のUIViewControllerが作成され、MainViewControllerに追加されます。

サイドバーは常に上に残りますが、コンテンツ領域を動的に変更するのは難しいです(MainViewController)。コンテンツエリアにアクセスして変更することはどのように可能ですか?

私はUIKitの標準コンポーネントについて認識していますが、ユーザー仕様のためにこのようなソリューションを実装する必要があります。

答えて

1

私はUIPopoverControllerであなたのサイドバーを実装しようとすることから始めます。この種の問題に対してはかなりうまく設計されており、UIのニーズを満たすために広範囲にカスタマイズすることができます。 UIPopoverControllerが何らかの問題を引き起こした場合は、サイドバーを自分自身のUIWindowに入れて、メインウィンドウ上に浮かせるようにします。それはより多くのこの種の問題のために構築されていますので、

EDITは個人的に私はポップオーバーのために自分自身を行くだろう。私が過去に使った考え方は、UIViewで、UIWindowに直接追加できます([view window]はどちらでも見ることができます)。 UIWindowは特別な種類のUIViewであることを覚えておいてください。この問題とUIWindowの問題は、独自の回転ロジックを実行する必要があることです。自動回転ロジックを使用している場合は、それよりも厄介なことがあります。 UIPopoverControllerは、このすべてを非常にきれいに自動で処理できます。

あなたがUIWindowを追求した場合は、ビュー・プログラミング・ガイドのWindowsのセクションを参照してください。http://developer.apple.com/library/ios/#documentation/WindowsViews/Conceptual/ViewPG_iPhoneOS/CreatingWindows/CreatingWindows.html

+0

は、ご返信いただきありがとうございます。第二の解決法のアドバイスをお願いしますか?サイドバーを別の 'UIWindow'の中に置くことはどうでしょうか?私は最初のものが複雑かもしれないと思う。ありがとうございました。 –

+0

ありがとうございます。私は従う方法について知らない。おそらく 'UIPopoverController'が正しいかもしれません。私の意見では、このコントローラの外観をカスタマイズすることができない可能性があります。たとえば、iOS 4では、境界をカスタマイズすることはできません。 iOS 5のカスタマイズが変更されたかどうかはわかりません。過去に使用したソリューションについて共有するコードはありますか?ありがとうございました。 –

+0

あなたは正しいです。私が話していた部分は、iOS 5( 'popoverBackgroundViewClass')に追加されました。それはあなたにトップレベルに添付されたウィンドウまたはビューを残します。私は '[[view window] rootViewController]ビュー]に' UIView'を追加して、それがうまくいくかどうか確認します。そうでない場合は、 '[view window]'に直接追加してください。 –