2017-11-08 3 views
0

VCからチャットに来た場合、あるナビゲーションコントローラから別のナビゲーションコントローラに移動したいのですが、戻るボタンを押したときにInbox VCに移動するときにこのフローが必要です。 私はセグエを試み、ナビゲーションコントローラをプッシュするが、それはバックがUINavigationControllerXcode Swiftで異なるナビゲーションコントローラ間を移動

select contact in contact list and move to chat VC and in chatVC, on pressing back button which shows in navigation bar I move to inbox VC

+0

これは、畳み込まれたロジックのように感じます。 ** 2つの**ナビゲーションコントローラを使用する理由ナビゲーションを** one **に組み合わせることができれば(必要に応じてプレゼンテーションビューコントローラを使用する)、なぜユーザを混乱させるのですか?あなたがしようとしていることをリファクタリングしてください。 – dfd

+0

私はタブバーコントローラを使用しているので、2つのナビゲーションコントローラを使用しています。すべてのタブバーアイテムはそのナビゲーションを維持します –

答えて

0

来たVCフォームにスタックベースのナビゲーションシステムです。つまり、前方にナビゲートすると、別のUIViewControllerがスタックに追加されます。逆方向にナビゲートすると、UIViewContrllerがスタックからポップします。

あなたが提案していることを実行するには、ナビゲーションスタックに現在あるUIViewControllerの基礎を変更する必要があります。あなたはfunc setViewControllers(_ viewControllers: [UIViewController], animated: Bool)をプログラムで使用してUINavigationControllerを使用することができますが、UINavigationControllerを使用する方法ではなく、ストーリーボードで行うことはできません。

0

UINavigationControllerコントローラーは、新しいビューコントローラーをプッシュするときに、ビューのスタックを(単純な言葉で理解して)保持します。したがって、戻ると、最後のView Controllerがポップされ、親コントローラが表示されます。これは、iOSプラットフォームでの通常のユーザー動作です。

あなたのナビゲーションの流れを壊しているので、ユーザーにとっては直感的ではありません。しかし、あなたがそれを強く支持することができれば。インボックスコントローラにプッシュボタンを手動で作成して、コードやインタフェースビルダーでこの種の動作を取得できます。あなたは他のアプリで見ることができるもの、おそらくこれを達成するために


もう一つの方法は次のとおりです。

  1. あなたは(フォームかもしれません)申し込み・ビュー・コントローラを持っています。サインアップが完了したら。
  2. ウィンドウのルートビューコントローラーを受信ボックスコントローラーに変更し、
  3. 同じ時刻に、チャットコントローラーを押して、ユーザーが戻るボタンを押すと、受信トレイに戻されます。
関連する問題