1

ナビゲーションバーに戻るボタンの画像を設定する以下のコードがあります。ナビゲーション コントローラーは、タブ バー コントローラー上にあります。問題は、ビューを初めて押したときに正しいボタン イメージが表示されることです。(別のタブで) 設定に移動し、表示するボタンを変更してからタブ 1 に戻って同じビューをもう一度押すと、if ステートメントで正しいコードが呼び出されても、古い [戻る] ボタンが表示されたままになります! ビューをポップしてもう一度押すと、正しいボタンが表示されるようになりました。

ボタンを変更するためにコードが呼び出されたにもかかわらず、ボタンが変更されない理由がわかりませんが、最初はうまく変更されます! ViewController の viewDidLoad メソッドは毎回呼び出されるため、永続化する必要はありません。

if ([[DataSingleton sharedSingleton] isBlue]) {
    NSLog(@"isBlue");
    // Set toolBar and button colours
    UIImage *navBarImage = [UIImage imageNamed:@"PortraitNavBarBlue"];
    [self.navigationController.navigationBar setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];
    UIImage *barButton = [[UIImage imageNamed:@"backBlue"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 14, 0, 7)];
    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:barButton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
} else {
    NSLog(@"notBlue");
    // Set toolBar and button colours
    UIImage *navBarImage = [UIImage imageNamed:@"PortraitNavBar"];
    [self.navigationController.navigationBar setBackgroundImage:navBarImage forBarMetrics:UIBarMetricsDefault];
    UIImage *barButton = [[UIImage imageNamed:@"back"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 14, 0, 7)];
    [[UIBarButtonItem appearance] setBackButtonBackgroundImage:barButton forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
}

self.navigationController.navigationBar を呼び出しているのに対し、戻るボタンの場合はグローバル設定である [UIBarButtonItem 外観] を呼び出しているため、バーの色がうまく変化している可能性があると思います。戻るボタンを直接参照する方法はありますか?

4

0 に答える 0