9

ルート コントローラーとしてナビゲーション コントローラーがある iOS アプリがありますが、ナビゲーション バーの 1 つでビューを選択するためのタブ バーが一部にあります。見た目は iTunes アプリに似ています (上部にナビゲーション バー、下部にタブ バー)。選択したタブに基づいてナビゲーション バーのタイトルを変更したい。各タブに 2 つの個別のコントローラー ファイルがあります。これを無駄に修正するために、これまでにそれぞれで使用しようとしたものは次のとおりです。

self.navigationItem.title = @"Title";
self.navigationController.navigationItem.title = @"title";
[self.navigationController setTitle:@"Live"];    
[self setTitle:@"Top Title"];

押されたタブに基づいて NavBar のタイトルを変更するにはどうすればよいですか?

4

6 に答える 6

2

タブ バー コントローラーによって表示される個々のビュー コントローラーに独自のナビゲーション バーがある場合、

[self setTitle:@"Foo"];

タブ バーのラベルとナビゲーション バーのタイトルの両方を設定します。

ナビゲーション コントローラーがトップ レベルにある場合 (つまり、タブ バーがナビゲーション コントローラー内にある場合)、ナビゲーション バーのタイトルを手動で設定する必要がある場合があります (これらの子コントローラーはviewDidAppearではなく で行う必要があります)。viewDidLoad切り替えるたびにリロードされるわけではありません)、例:

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    [self.navigationController.navigationBar.topItem setTitle:@"Foo"];
}

UITabBarControllerDelegateまたは、メソッドでこのナビゲーション バーのタイトル調整を行うこともできますdidSelectViewController

これで解決しない場合は、コントローラーの階層を説明して質問を明確にする必要があるかもしれません (たとえば、ナビゲーション バー内のタブ バー コントローラー、またはその逆)。

于 2013-05-16T16:04:54.713 に答える
1

UITabBarController をサブクラス化し、デリゲートをそれ自体に設定し、ビュー コントローラーが選択されたときにデリゲートを使用してそのタイトルを設定できます。

- (void)tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController
{
    //change the title based on viewController that is selected
    self.title = @"New title";
}
于 2013-05-16T16:06:03.760 に答える