2

我正在使用自定義導航欄。 在我的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內有一個按鈕。

但是在一個VC中,我需要設置2個按鈕,並且我還更改navigationbarbackgroundImage。所以我在ViewDidLoad中複製了與上面相同的代碼,但現在與其他圖像複製。這是行得通的。

但現在我想在所有其他VC的第一個navigationbar。所以在我的viewDidDisappear我再次複製代碼與其他圖像。

以下是哪裏錯了:

  • 背景圖像不改變
  • 的leftbarbutton不會消失

任何人可以幫助我嗎?

PS:我正在使用tabbarcontroller。所以如果我說切換VC的話,我的意思是轉到tabbar控制器中的另一個選項卡

回答

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] 
}]; 
+0

我收到一個錯誤「程序中意外@」。請你幫幫我。 – chandru

+0

@chandru你使用過'@ {'還是'@'? – dasdom

+0

這就是我所要求的,我只是複製了上面的代碼並粘貼了它 – chandru

相關問題