1

UINavigationControllerによって異なるUIViewControllerが表示されているときに、UINavigationBarの内容を変更できるようにする必要があります。これは、ナビゲーションコントローラがView Controllerのtitleプロパティを使用するだけなので、タイトルで簡単に実現できます。私が苦労しているのは、ビューコントローラに応じて左右のバーボタン項目を変更することです。参考のために、私は次のように使用されますが、私はそれらを変更するために使用するUINavigationControllerに表示されるUIViewControllerに応じてUINavigationBarを変更する方法

コードは、すでに複数の他の質問に対処されて本当に問題ではありませんしています

UIBarButtonItem *newItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: 
    UIBarButtonSystemItemAdd target:self action:nil]; 
newItem.tintColor = [UIColor whiteColor]; 
self.navigationItem.rightBarButtonItem = newItem; 

私は何を私だと思います探しているのは、ナビゲーションコントローラのレイアウトを設定するために新しいUIViewControllerがナビゲーションコントローラによって表示されるたびに呼び出されるメソッドです。 UINavigationControllerのドキュメントでは、次の方法であって、

// Called when the navigation controller shows a new top view controller via a push, pop or setting of the view controller stack. 
- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated; 

しかし、この方法は一見、私はアプリを実行する任意の時点で呼び出されません。したがって、新しいView ControllerがNavigation Controllerによって表示されるときに呼び出されるメソッドはありますか?または私はここで完全に間違っていると私はこれまで見逃しているそれの下に表示されているビューでナビゲーションバーを変更するために既に受け入れられた方法がありますか?

+0

このメソッドは 'UINavigationControllerDelegate'プロトコルの一部であり、' UINavigationController'自体ではありません。あなたは議定書を採択し、「委任」を設定しましたか? – pbasdf

+0

どのようにして自動的に行われないナビゲーションバーを変更したいですか? – Wain

+0

通常は、各ビューコントローラーのbarButton項目を個別に割り当てます(バックボタンが自動的に追加されます)。なぜあなたはナビゲーションコントローラでそれをしたいのですか? –

答えて

1

一般的な解決策は、各ビューコントローラのviewDidLoadメソッドにコードを挿入して、目的のボタンを設定することです。

質問の最初のビットは、ビューコントローラ(ビューコントローラ)が表示されているときに、ナビゲーションバーの右側に表示するボタンを設定するビューコントローラの完全な例です。

ナビゲーションコントローラの代理人またはナビゲーションコントローラ自体には何もする必要はありません。

関連する問題