0

(これは私の前の質問のフォローアップです: 2 つの UIView の間で「90% のスライド」を達成する方法)

現在の状態:

背景として、2 つの個別の UIView (およびそれぞれの UIViewController) を、必要に応じて「出し入れ」して管理するコンテナー ビュー コントローラーがあります。

ここに画像の説明を入力

@rdelmar からのガイダンスのおかげで、これが機能するようになりました。

問題:

次の質問は次のとおりです。セカンダリ ビュー (上図の黄色) を「ナビゲート可能」にしたいと考えています。

ここに画像の説明を入力

私の考え:

この種のナビゲーションを処理するために、その下のフレームに UINavigationView コントローラーを埋め込むことを検討しましたが、既存の UIView 内に UINavigationController の機能を「埋め込む」ことはできないことを( UIViewController 内の iPhone UINavigationControllerなどのいくつかのソースを介して) 学びました。画面全体を占有します。

したがって、UINavigationController が出ている場合 (それが本当にそうであるかどうか、または上記の結論が間違っているかどうかを教えてください)、ある種の階層を手動で作成し、それらの UIView の入力方法と管理方法を管理する必要があるように思えます。下枠を残します。それは世界で最悪のことではありませんが、これを無料で提供している UINavigationController について考えると胸が痛くなります。

いつものように、あなたの考えは大歓迎です。ありがとう!

4

2 に答える 2

2

UINavigationControllerは確かに出ていません:)

あなたは言う

2 つの個別の UIView (およびそれぞれの UIViewController) を管理するコンテナー ビュー コントローラーがあります。

ここでナビゲーション コントローラーを使用するのは、ほんのわずかな変更です。

lower を追加する代わりに、ルート ビュー コントローラーとして をUIViewController追加しUINavigationControllerます。UIViewController

つまり、代わりに

// If 'small' is the name of your smaller view controller
[self addChildViewController:small];
[self.view addSubview:small.view];

行う

UINavigationController *n = [UINavigationController alloc] initWithRootViewController:small];
n.view.frame = small.frame;
[self addChildViewController:n];

[self.view addSubview:n.view];

アプリの下部セクションに新しいビュー コントローラーをプッシュ アンド ポップできるようになりました。

現在、いくつかのアプリ (iOS 5 以降) でこれを行っていますが、まったく問題は発生していません。

PS 上記のコードはメモリから入力されているため、一部のメソッド名は正確ではない可能性があります!

于 2013-08-09T14:46:13.387 に答える
0

ルート ビュー コントローラーを UINavigationController に設定し、ギア ビューを UINavigationController の子として単純にオーバーレイすることをお勧めします。これを行うには、insertSubview:aboveSubview: を使用できます。

機能のコアはルート ビュー コントローラーである必要があるため、これにより作業が大幅に簡素化されます。

すべてのアニメーションとスタック ロジックを無料で取得できるため、UINavigationController を使用することをお勧めします。

于 2013-08-09T14:45:48.937 に答える