2016-10-06 3 views
-2

私は2つのビュー間を移動する単純なナビゲーションビュー階層を持っています。私はカスタマイズされたナビゲーションバーを必要としていたので、デフォルトのものを隠して、Nav階層の2つのビュー間で共有されるコンテナビューを実装しました。アニメーションのないナビゲーション階層全体でビューを共有するにはどうすればいいですか?

私が望むようにすべて動作しますが、下位または上位のビューにセグをしたときを除いて、トップバーがスライドして表示され、新しいビューに再び表示されます。階層の他のビューにプッシュまたはポップすると、静止しているように見えます。

これを行う簡単な方法はありますか?または、私は自分のカスタム共有コンテナビューを削除し、ナビゲーションバー(私は現在「隠している」)でこの作業をしようとしますか?

+0

は、それは私が(それは高さだ変更、およびカスタムボタンを追加する)だけ弾丸をかむと、デフォルトのナビゲーションコントローラをカスタマイズする方法を学ぶことであろうやろうとしたものを行うための最善の方法のように思えます。しかし、今私はいくつかの予期しない新しい問題を引き起こさない限り、私はすでによく知っているアプローチですので、私は画面上でスライドすることができます複数の重複するコンテナビューで私のアプリを達成しようとしています私が望む外観を得るでしょう。 – PlateReverb

答えて

1

私はクライアントのためにこれを一度行う必要がありました。私たちがやったやり方は、あなたが言ったように、コンテナビューを収容した包括的なView Controllerを作ることでした。このコンテナビュー内には、UINavigationControllerが埋め込まれていて、手動でポップしてUIViewControllerをナビゲーションスタックにプッシュします。もちろん、UINavigationControllerのナビゲーションバーを非表示にしたいとします。

これは実装されているようですが、カスタムナビゲーションコントローラ内にプレーンな古いビューコントローラを埋め込んだ後、カスタムビューコントローラに埋め込まれた別のビューコントローラにセグメンテーションしますか?理想的には、UINavigationControllerが埋め込まれたこのカスタムnavコントローラの1つのインスタンスが必要です。私はあなたがプログラムですべてのビューコントローラのトランジションを行う必要がありますと信じています。

意見::これは、個人的にはに対して、に対してです。私は、アプリケーションはそれが実行されているOSの拡張のように感じる必要がありますと思う。ユーザーは自分の携帯電話の一部だと感じるはずです。ネイティブナビゲーションバーを使用すると、ユーザーがアプリを理解するために必要とする労力を軽減できます。

あなたは「しかしそれは単なるナビゲーションバーです」と思っていますが、読み込みに2.5秒以上かかるとアプリをアンインストールする可能性のある同じ人物について話しています。

+0

私は2つのVCの間に通常の 'UINavigationController'セットアップを持っています。各VCには、埋め込みセグを介して同じVCにリンクされた同じサイズの埋め込みコンテナビューが含まれています。サイズをカスタマイズしてデフォルトのナビゲーションバーにボタンを追加する方法はわからなかったので、私はこのルートを下って行きました。そして、これまでのところ正確に動作しますが、上下にセグリングするときに再起動したくないnavスタック私のコンテナビュー "準ナビゲーションバー"とネイティブのナビゲーションバーの唯一の違いは、美しさの点ではちょっと高さが少しだけです。 – PlateReverb

+0

Navbarを隠すためのコードはどこにありますか? @PlateReverb – Zolnoor

+0

両方のView Controllerクラスの内側 – PlateReverb

1

私は、カスタマイズされたナビゲーションバーを望んでいたので、私はあなたの間違いのデフォルトの1つの隠れ

を持っています。 UINavigationControllerインターフェイスでカスタマイズされたナビゲーションバーを取得する方法は、init(navigationBarClass:toolbarClass:)で初期化することです。今すぐ組み込みのナビゲーションコントローラナビゲーションバーを使用しています!そしてそこからすべてがうまくいくでしょう。

https://developer.apple.com/reference/uikit/uinavigationcontroller/1621866-init

+0

私の「カスタマイズされたナビゲーションバー」は、実際にはView Controller内の別個のViewで、レイヤーのVC上に別々の組み込みコンテナビューを介してnavスタックの異なるビュー間で共有されます。 – PlateReverb

+0

この初期化はどこに配置する必要がありますか?コンテナビューまたはビューコントローラを初期化することは可能ですか?それには、ナビゲーションバーとしてセグ接続が組み込まれていますか?またはカスタムナビバーを別の方法で作成する必要がありますか? – PlateReverb

関連する問題