如何在按钮点击时立即更改UINavigationBar图像?

时间:2013-09-16 12:17:54

标签: iphone ios objective-c uinavigationcontroller uinavigationbar

在我的iPhone应用程序中,我必须在按钮点击时更改UINavigationBar图像。

以下是调用buttoclick

的函数
-(void)btnBlueDelegate{


    // Create resizable images
    UIImage *gradientImage44 = [[UIImage imageNamed:@"header_Blue.png"]
                                resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];
    UIImage *gradientImage32 = [[UIImage imageNamed:@"header_Blue.png"]
                                resizableImageWithCapInsets:UIEdgeInsetsMake(0, 0, 0, 0)];

    // Set the background image for *all* UINavigationBars
    [[UINavigationBar appearance] setBackgroundImage:gradientImage44
                                       forBarMetrics:UIBarMetricsDefault];
    [[UINavigationBar appearance] setBackgroundImage:gradientImage32
                                       forBarMetrics:UIBarMetricsLandscapePhone];

    //[[UINavigationBar appearance]setBackgroundColor:[UIColor blueColor]];

    [self.view  setNeedsDisplay];

}

现在我的问题是当我转到另一个视图时导航栏更改生效。但是在按钮单击同一视图控制器后它不会立即更改。

我知道我的导航栏已经绘制的原因所以它无法更改按钮点击..所以任何人都可以告诉我如何更改我当前视图的导航栏即使点击按钮后..

可能我需要重新加载整个视图..但不知道我该怎么做。

先谢谢。

1 个答案:

答案 0 :(得分:2)

在您的UIButton操作方法上调用此方法:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed: @"header_Blue.png"] 
               forBarMetrics:UIBarMetricsDefault];