当我更改UIView时我的NavigationBar不

问题描述:

我有一个ViewController嵌入在NavigationController中,我自定义NavigationBar(更改代码中的背景图像),当我点击一个按钮时,它将用户导向另一个视图正确。但是,我无法改变的NavBar的形象,当我到达这个观点...... 我试着写:当我更改UIView时我的NavigationBar不

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

在IBAction为方法,在我的主视图控制器的ViewDidUnload和viewDidLoad中和initWithNibName我的其他ViewController,但没有任何更改前一个图像。我能做什么 ?

我IBAction为如下:

- (IBAction) versModeEmploi : (id) sender 
{ 
    if(!modeEmploi) modeEmploi = [[ModeEmploiController alloc] initWithNibName:@"ModeEmploiController" bundle:nil]; 
    UIBarButtonItem *backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Retour" style:UIBarButtonItemStylePlain target:nil action:nil]; 
    self.navigationItem.backBarButtonItem = backBarButtonItem; 
    [self.navigationController pushViewController:modeEmploi animated:NO]; 
} 

非常感谢您的任何意见

在你的第一个视图控制器试试这个:

[[UINavigationBar appearance] setBackgroundImage:image forBarMetrics:UIBarMetricsDefault]; 
+0

我试过了,但它不起作用......而且我注意到一件奇怪的事情。在我看来,navigationBar属性发生了变化,但没有重新绘制。因为我的主视图中还有一个“黑暗信息”按钮(这是您在创建新的实用程序应用时默认的配置),当我点击它时,主视图会翻转到另一个,当我来回到主视图导航栏背景已经改变... – Rob

+0

对不起,想法不明:-( – Chris

+0

我几乎完成这个问题!我使用setNeedsDisplay方法,它的工作原理。几乎。我只是面对一个我的BackBarButton重绘最初的导航栏的小问题。 – Rob

非常愚蠢的问题(又名:“你试图将其关闭并重新开启?”):

你是如何从“嵌入式视图”转换到第二种视图的?它应该是这个样子:

[self.navigationController pushViewController:detailViewController animated:YES]; 

如果没有,那么self.navigationController不会指向有用的东西在你的第二个观点。

的问候, 克里斯

+0

看看我的主要帖子上的编辑,非常感谢您的回答! – Rob

那么,如果有人有兴趣的解决方案,我只是用这个来解决这个问题:

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

这是添加viewDidAppear/Disappear方法取决于我们想要的。