我有一个自定义的 UINavigationController
可以绘制自定义背景。在 Root View Controller 上访问 self.navigationController
时,已经设置了该导航 Controller 。现在我想做的是推送一个新的 View Controller ,但将新 View Controller 中的导航 Controller 替换为默认的导航 Controller (没有自定义背景)。
基本上,新的 View Controller 会呈现一个带有半透明导航栏的图像。因为它重用了 Root View Controller 中的导航 Controller (具有自定义背景),所以最终效果是具有自定义背景的半透明导航栏。
我知道在将新 View Controller 呈现为模态视图时我可以替换导航栏。但是我可以在推送新的 View Controller 时替换它吗?
我试过类似的方法,但这段代码没有效果:
LTImageViewController* controller = [[LTImageViewController alloc] init];
UINavigationController* navController = [[UINavigationController alloc] initWithRootViewController:self];
[navController pushViewController:controller animated:YES];
最佳答案
您不能只是将 View Controller 推送到任何旧的导航 Controller 的堆栈上。 (好吧,你可以,但你不会走得太远。)导航 Controller 应该是应用程序窗口的 Root View Controller 。如果你想使用你的自定义导航 Controller ,你应该用你的自定义版本替换现有的导航 Controller 。你会做类似的事情:
AppDelegate *appDelegate = [[UIApplication sharedApplication] delegate];
delegate.window.rootViewController = [[MyCustomNavController alloc] init];
关于iphone - 如何用替换的 UINavigationController 推送 UIViewController,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10028852/