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