自定义导航栏在一个viewcontroller中更改

时间:2013-07-26 07:57:15

标签: ios objective-c uinavigationcontroller uitabbarcontroller uinavigationbar

我正在使用自定义导航栏。 在我AppDelegate我已经完成了这件事。

[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navbar"] forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setTitleTextAttributes: @{
                            UITextAttributeTextColor: [UIColor whiteColor],
                      UITextAttributeTextShadowColor: [UIColor whiteColor],
                     UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],
                                 UITextAttributeFont: [UIFont fontWithName:@"Carrois Gothic" size:18.0f]
 }];

viewController级别,我将按钮放在navigationController内。在viewControllers navigationbar中,我只有backgroundImage内的一个按钮。

但是在一个VC中我需要设置2个按钮,我也会更改navigationbar的{​​{1}}。那么我在ViewDidLoad中复制了与上面相同的代码,但现在又复制了其他图像。这很有效。

但现在我想要所有其他VC的第一个navigationbar。所以在我的viewDidDisappear我再次使用另一张图片复制了代码。

以下是错误的:

  • 背景图片未更改
  • 左栏按​​钮不会消失

有人可以帮我吗?

PS:我正在使用tabbarcontroller。因此,如果我说切换VC,我的意思是转到tabbarcontroller中的另一个标签

1 个答案:

答案 0 :(得分:12)

不要在ViewController中使用外观代理。只需直接设置背景:

[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navbar"] forBarMetrics:UIBarMetricsDefault];
[self.navigationController.navigationBar setTitleTextAttributes: @{
                         UITextAttributeTextColor: [UIColor whiteColor],
                  UITextAttributeTextShadowColor: [UIColor whiteColor],
                 UITextAttributeTextShadowOffset: [NSValue valueWithUIOffset:UIOffsetMake(0.0f, 1.0f)],
                             UITextAttributeFont: [UIFont fontWithName:@"Carrois Gothic" size:18.0f]
}];