私は各コントローラにボタンを追加する方法を知っています。ナビゲーションコントローラのスタックに押し込みます。 しかし、コントローラがプッシュまたはポップされても、ナビゲーションバーの右上には常に設定ボタンが必要です。ボタンは、設定viewControllerをモーダルで表示する必要があります。は、ボタンをUINavigationControllerスタック全体に持続させる方法ですか?
私には、各コントローラのviewDidLoadにはボタンのコードと設定コントローラのヘッダーを含むコードが含まれています。
ナビゲーションコントローラ自体からこのボタンを挿入して、ナビゲーションコントローラのセレクタを指し示すことができるようです。そして、このメソッドは、その時点でスタック内でアクティブになっているコントローラーを介して、settingsControllerをモーダルに表示します。
これを達成するためのアイデアはありますか?
感謝:1 - -
-pushViewController:aniamted:
3オーバーライドする - の2つのメソッドを追加サブクラスUINavigationControllerとは、私の設定コントローラ
2のヘッダーが含まれます。しかし、その間に私は新しい視点をナビゲーションコントローラに限定しておくので、デザインの観点からはもっと適切かもしれないと思う別のアプローチ(私の答えを見てください)を思いつきました。しかし、ええ、私は意味...コンセプトに恵まれて、私はあなたのポイントを見て、また、これは "デリゲート"タスクだと主張することができます。 – SaldaVonSchwartz
ええ、そうです。私は一般に継承よりも委譲と合成を優先しますが、私はこのビューコントローラのコードの外側からプッシュされたビューコントローラのnavigationItemを変更しているので、この場合はどちらも設計上問題があると思います。最も正しい*方法は、常にこのボタンを表示するUIViewControllerのサブクラスを持つことです。とにかくこの時点で髪を分割しています。あなたがうまく働いてうれしい。 – joerick
私は間違っているかもしれませんが、私は実際にViewControllersが自分のナビゲーション項目を変更してはいけないということを実際に聞いたと思います。私が推測する考えは、完璧な世界では、View Controllerはナビゲーションコントローラーのコンテキスト内に存在する可能性があることさえ知りません。だから、 "プッシャー"(新しい用語はここに...単にプッシャーとプッシーのコンセプトを構成しました:p)プッシーのナビゲーションアイテムの設定、プッシュ前、コントローラは次のコントローラの設定について知っておく必要があります。 – SaldaVonSchwartz