0

我有一個自定義UINavigationController,它繪製了一個自定義背景。在根視圖控制器上訪問self.navigationController時,該導航控制器已設置。現在我想要做的是推新視圖控制器,但將新視圖控制器中的導航控制器替換爲默認視圖控制器(沒有自定義背景)。如何用替換的UINavigationController推送UIViewController

基本上,新的視圖控制器呈現導航欄是半透明的圖像。由於它從根視圖控制器重新使用導航控制器(具有自定義背景),因此最終效果是具有自定義背景的半透明導航欄。

我知道我可以在將新視圖控制器作爲模態視圖呈現時替換導航欄。但是,我可以在推新視圖控制器時更換它嗎?

我想是這樣的,但是這個代碼沒有任何影響:

LTImageViewController* controller = [[LTImageViewController alloc] init]; 
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:self]; 
[navController pushViewController:controller animated:YES]; 

回答

1

在推動在UINavigationController的它創建了一個堆棧視圖控制器,而且我認爲我們不能在另一個推的導航控制器。

你可以做一兩件事顯示您的viewController模態,改變TransitionStyle到UIModalTransitionStyleCoverVertical

可能有助於

2

你不能只推一個視圖控制器到任何舊的導航控制器的堆棧。 (好吧,你可以,但你不會走得太遠。)導航控制器應該是應用程序窗口的根視圖控制器。如果您想使用自定義導航控制器,則應該使用自定義版本替換現有的導航控制器。你會做這樣的事情:

AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate]; 
delegate.window.rootViewController = [[MyCustomNavController alloc] init]; 
+0

它有點工作,但過渡到新的視圖控制器沒有動畫。 – Amiramix 2012-04-05 13:32:07

0

如果您的問題僅僅是款式/顏色/您的導航欄的形象,在你viewControllers的viewWillAppear:你可以設置:

[self.navigationController.navigationBar setBackgroundImage:yourImage        
               forBarMetrics:UIBarMetricsDefault]; 
相關問題