0

我有一個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]; 
} 

非常感謝您的任何意見

回答

1

在你的第一個視圖控制器試試這個:

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

我試過了,但它不起作用......而且我注意到一件奇怪的事情。在我看來,navigationBar屬性發生了變化,但沒有重新繪製。因爲我的主視圖中還有一個「黑暗信息」按鈕(這是您在創建新的實用程序應用時默認的配置),當我點擊它時,主視圖會翻轉到另一個,當我來回到主視圖導航欄背景已經改變... – Rob

+0

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

+0

我幾乎完成這個問題!我使用setNeedsDisplay方法,它的工作原理。幾乎。我只是面對一個我的BackBarButton重繪最初的導航欄的小問題。 – Rob

1

非常愚蠢的問題(又名:「你試圖將其關閉並重新開啓?」):

你是如何從「嵌入式視圖」轉換到第二種視圖的?它應該是這個樣子:

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

如果沒有,那麼self.navigationController不會指向有用的東西在你的第二個觀點。

的問候, 克里斯

+0

看看我的主要帖子上的編輯,非常感謝您的回答! – Rob

1

那麼,如果有人有興趣的解決方案,我只是用這個來解決這個問題:

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

這是添加viewDidAppear/Disappear方法取決於我們想要的。

相關問題