当我更改UIView时,我的NavigationBar没有

时间:2012-05-25 10:46:12

标签: objective-c ios uinavigationcontroller uinavigationbar background-image

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

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

在IBAction方法中,在我的主ViewController的ViewDidUnload中以及我的其他ViewController的ViewDidLoad和initWithNibName中,但没有任何内容更改上一个图像。我该怎么办?

我的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];
}

非常感谢任何建议

3 个答案:

答案 0 :(得分:1)

非常愚蠢的问题(又名“你试图把它关掉再打开吗?”):

您是如何从“嵌入视图”过渡到第二个视图的?看起来应该是这样的:

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

如果没有,那么self.navigationController将不会在您的第二个视图中指向任何有用的内容。

此致 克里斯

答案 1 :(得分:1)

在第一个视图控制器中尝试此操作:

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

答案 2 :(得分:1)

如果有人对解决方案感兴趣,我只需要用它来解决问题:

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

这是根据我们想要的内容添加viewDidAppear / Disappear方法。