两个UINavigationController嵌套问题:隐藏,跳转问题解决方法

有两个UINavigationController,名字叫N1,N2。点击N1视图上面的按钮进入N2,然后N1的UINavigationBar隐藏,N2的UINavigationBar是显示的;再点击N2的UINavigationBar的back按钮返回到N1,但是使用popViewControllerAnimated,popToRootViewControllerAnimated,popToViewController试过了都没用,也无法也无法再N2视图里面对N1的UINavigationBar进行隐藏,该如何解决?

iPhone 95%以上的应用程序是采用UINavigationController。不相信吗?仔细打开你的iPhone看看你装的非游戏应用是不是都是采用UINavigationController开发的。

一般我们创建新项目时,会以UIViewController为准,然后在appDelegate.m文件里面通过
UIViewController *mainView = [[UIViewController alloc] initWithNibName:@"HomeScreen" bundle:nil];
UINavigationController *navController = [[UINavigationController alloc]initWithRootViewController:mainView];
来创建一个UINavigationController视图控制器。并将其作为整个应用程序的主视图

但是,有时候,我们会在这个主视图里面放置一些按钮,点击按钮会push到一个以UINavigationController和UITabBar相结合的视图里面,这样就会产生嵌套的问题:上面有两个UINavigationBar。

一般我们会采取在适当的时候隐藏其中一个UINavigationBar,但是很多人都会碰到两个问题:
1.如何隐藏最外围的那个UINavigationBar
2.点击里面的那个UINavigationController里面的UINavigationBar上面的home按钮,如何push返回到最外围的那个主视图

如果你对委托非常了解,相信你应该可以解决

第一个问题:先获取appdelegate对象,再。。。
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate.visionViewController.navigationController setNavigationBarHidden:NO animated:NO];

第二个问题:和上面的一样通过appdelegate来获取最外围的navigationController:
AppDelegate *appDelegate = [UIApplication sharedApplication].delegate;
[appDelegate.visionViewController.navigationController popToRootViewControllerAnimated:YES];

猜你喜欢

转载自zl4393753.iteye.com/blog/1702553
今日推荐