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]; 
相关问题