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

Ste*_*ann 2 objective-c uinavigationbar uitabbarcontroller uinavigationcontroller ios

我正在使用自定义导航栏.在我,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]
 }];
Run Code Online (Sandbox Code Playgroud)

viewController级别我把按钮放在里面navigationController.总而言之,viewControllers我只有一个按钮navigationbar.

但在一个VC我需要设置2个按钮,我也改变backgroundImagenavigationbar.所以我复制了与上面相同的代码ViewDidLoad但现在使用其他图像.这很有效.

但现在我想要所有其他VC的第一个navigationbar.所以在我viewDidDisappear再次复制代码与另一个图像.

以下是错误的:

  • 背景图像没有变化
  • 左栏按钮不会消失

任何人都可以帮我吗?

PS:我正在和一个人合作tabbarcontroller.因此,如果我说切换VC,我的意思是转到tabbarcontroller中的另一个选项卡

das*_*dom 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]
}];
Run Code Online (Sandbox Code Playgroud)