iphone - 如何用替换的 UINavigationController 推送 UIViewController

标签 iphone ios uiviewcontroller uinavigationcontroller uinavigationbar

我有一个自定义的 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/

相关文章:

ios - 可以确定其他 iPhone/iPad 应用程序的使用统计数据吗?

ios - 如何检查位置服务并启动不同的 View ?

ios 从 ViewController 中的表中删除行

用于 UIScrollViews 内容的 iOS VIewController

ios - 横向应用程序中的 GameCenter 身份验证抛出 UIApplicationInvalidInterfaceOrientation

iphone - 替换 html 字符串中的图像 URL

iphone - 如何使用didReceiveMemoryWarning和viewDidUnload?

iphone - 修复图像 + iphone 的方向

iphone - 如何在不使用 MKMapView 的情况下检查 MKCoordinateRegion 是否包含 CLLocationCoordinate2D?

iphone - 将 MKPolyline Overlay 添加到 MKMapView 会导致应用程序崩溃