动态更改后退按钮图像

时间:2012-09-26 21:06:14

标签: ios xcode cocoa-touch uiviewcontroller uibarbuttonitem

我有以下代码在导航栏上设置后退按钮图像。 导航控制器位于标签栏控制器上。 问题是,当我第一次按下视图时,它显示正确的按钮图像。如果我进入我的设置(在另一个选项卡上)并更改应显示哪个按钮,然后返回选项卡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外观]这是一个全局设置。 有没有办法直接引用后退按钮?

0 个答案:

没有答案