0

iOS SDK のビュー コントローラーのドキュメントで説明されているように、コントローラーの包含パターンを使用するアプリに取り組んでいます。

コントローラー コンテナーを作成しましたが、うまく機能します。私のコントローラーには基本的に2つのサブビューが含まれており、ユーザーが何をしているかに応じて、両方を同時に表示し、一方を他方の上にスライドさせます。素晴らしい作品。

ここで、このコンテナー コントローラーをナビゲーション ビューで使用したいと考えています。これは、プッシュセグエを機能させるためです。実際には、含まれているコントローラーから、ナビゲーション スタックを使用し、新しいコントローラーをプッシュし、ユーザーが完了したときにポップできるようにしたいと考えています。

しかし、ルート コンテナーとしてコンテナー コントローラーを使用してナビゲーション ビューをインスタンス化すると、うまくいかないことに気付きました。

特に、私はこれに気づきました:

iOS ドキュメントでは、コンテナ コントローラは addChildController: を呼び出してから addSubview: を呼び出します。プッシュセグエが機能しないため、ナビゲーションスタックが壊れているようです-モーダルのように動作します。addSubview がナビゲーションスタックをリセットするため、これが行われると思います。

addChildController と addSubview を [self.navigationController pushViewController...] に置き換えることでこれを確認しました。addChildController の呼び出しを省略した場合に再現できたため、addSubview に問題があることを確認しました。

これを行うと、ナビゲーション スタックが正常に動作します。しかし、もちろん、「最後にプッシュされた」コントローラーのみが表示されるため、私のコンテナーコントローラーはそうではありません。

含まれているコントローラーで、新しいコントローラーをスタックにプッシュしたいので、これを行っています。ユーザーが完了したら、「前のコントローラー」をリロードせずにスタックを「ポップ」したいからです。

モーダル セグエを使用すると、前のコントローラーがリロードされます。プッシュ コントローラーを使用しても、そうではありません。

addSubview の動作に関するドキュメントが見つかりません。これはナビゲーション スタックに影響します。

皆さんが流すことができる光を前もってありがとう!

4

1 に答える 1

0

私はあなたが何をしているのか完全に理解するのに少し苦労していますが、あなたがやりたいことはまさに私がしていることだと思います.

rootView としてコンテナー UIViewController を持つ UINavigationController があります。そのコントローラーは、通常の方法で子を追加します。それらの子ビューの 1 つは、ポップされる可能性のある他のビューをプッシュします。

これらのプッシュされたビューの 1 つは、appDelegate にメッセージを送信し、必要に応じて自分自身を rootViewController にすることができます。一般に、View Controller への強い参照を保持している限り、それを「所有」している人から削除し、navigationControllers viewControllers 配列を心ゆくまでいじることができます。

于 2012-10-01T13:21:26.433 に答える