iphone - uinavigationbar自定义图像更改,因为新的视图控制器从堆栈弹出

时间:2011-02-08 15:45:57

标签: iphone image uinavigationbar

我目前在我的应用中有一个uinavigationbar,后台有自定义图像。 我已经使用类别技术实现了这一点。像这样:

@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
UIImage *image = [UIImage imageNamed: @"NavigationBar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end

我想也可以进行方法调整,但是从我读过的所有内容来看,这不是一个很好的方法,因为UIKit更改会破坏我的代码。 我遇到的问题是当新的视图控制器从堆栈弹出时改变背景图像。我似乎能够在按下它们时修改图像,但是当我弹出视图控制器时,我无法更改图像。有没有办法我可以听取用户点击导航控制器上的后退按钮并在那时触发图像更改? 同样好奇的是,这种做法是否被苹果公司劝阻。

2 个答案:

答案 0 :(得分:1)

您可以尝试使用此方法以编程方式设置背景图像。 Link to Apple Docs

willShowViewController:animated

答案 1 :(得分:0)

你可以试试这种方式

创建一个全局常量变量。

@implementation UINavigationBar (CustomImage)
- (void)drawRect:(CGRect)rect {
UIImage *image =nil;
if(CONSTANT==1)
    image= [UIImage imageNamed: @"NavigationBar.png"];
else
    image= [UIImage imageNamed: @"newbar.png"];
    [image drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
@end
UIViewController中的

-(void)viewWillAppear:(BOOL)animated{
   CONSTANT=2;//CONSTANT=1
   [self.navigationController.navigationbar setNeedsDisplay];
}