今儿项目老大让在现有项目的基础上再增加一个模块儿,而且也要下面的tabBar,第一次尝试也看了一些文章,实现效果如上图,实现原理和主要代码如下:
实现原理:
第一步:从A_TabBarCtrl -> B_TabBarCtrl
1.点击A_TabBarCtrl的 商品Ctrl
中的按钮 push出B_TabBarCtrl
2.Push的同时将A_TabBarCtrl的tabBar和navBar隐藏,让我们可以看到B_TabBarCtrl的tabBar和navBar
3.在A_TabBarCtrl的viewWillAppear方法里将tabBar和navBar显示出来,避免从B_TabBarCtrl -> A_TabBarCtrl的时候tabBar和navBar没有显示的问题
以上两步就可以将B_TabBarCtrl push出来
关键代码:
- (void)push2B_TabBarCtrl
{
B_TabBarCtrl *B = [[B_TabBarCtrl alloc] init];
/// 隐藏tabBar 和navBar
self.tabBarController.tabBar.hidden = YES ;
self.navigationController.navigationBarHidden = YES;
[self.navigationController pushViewController:B animated:YES];
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
/// 显示tabBar 和navBar
self.tabBarController.tabBar.hidden = NO ;
self.navigationController.navigationBarHidden = NO;
}
第二步: 从 B_TabBarCtrl -> A_TabBarCtrl
1.在B_TabBarCtrl的每一个childController里面增加一个返回按钮,其单击事件里将自己pop掉,此处注意的是需要使用
[self.tabBarController.navigationController popToRootViewControllerAnimated:YES];
而非
[self.navigationController popToRootViewControllerAnimated:YES];
网友评论