iOS SDK のビュー コントローラーのドキュメントで説明されているように、コントローラーの包含パターンを使用するアプリに取り組んでいます。
コントローラー コンテナーを作成しましたが、うまく機能します。私のコントローラーには基本的に2つのサブビューが含まれており、ユーザーが何をしているかに応じて、両方を同時に表示し、一方を他方の上にスライドさせます。素晴らしい作品。
ここで、このコンテナー コントローラーをナビゲーション ビューで使用したいと考えています。これは、プッシュセグエを機能させるためです。実際には、含まれているコントローラーから、ナビゲーション スタックを使用し、新しいコントローラーをプッシュし、ユーザーが完了したときにポップできるようにしたいと考えています。
しかし、ルート コンテナーとしてコンテナー コントローラーを使用してナビゲーション ビューをインスタンス化すると、うまくいかないことに気付きました。
特に、私はこれに気づきました:
iOS ドキュメントでは、コンテナ コントローラは addChildController: を呼び出してから addSubview: を呼び出します。プッシュセグエが機能しないため、ナビゲーションスタックが壊れているようです-モーダルのように動作します。addSubview がナビゲーションスタックをリセットするため、これが行われると思います。
addChildController と addSubview を [self.navigationController pushViewController...] に置き換えることでこれを確認しました。addChildController の呼び出しを省略した場合に再現できたため、addSubview に問題があることを確認しました。
これを行うと、ナビゲーション スタックが正常に動作します。しかし、もちろん、「最後にプッシュされた」コントローラーのみが表示されるため、私のコンテナーコントローラーはそうではありません。
含まれているコントローラーで、新しいコントローラーをスタックにプッシュしたいので、これを行っています。ユーザーが完了したら、「前のコントローラー」をリロードせずにスタックを「ポップ」したいからです。
モーダル セグエを使用すると、前のコントローラーがリロードされます。プッシュ コントローラーを使用しても、そうではありません。
addSubview の動作に関するドキュメントが見つかりません。これはナビゲーション スタックに影響します。
皆さんが流すことができる光を前もってありがとう!