今天看到支付宝是tabbar+4个navgation,在首页点击蚂蚁聚宝之后进去又是tabbar+navgation这种页面。
然后我也去做了这种功能,遇到了一些问题。求解决:
首先第一步的tabbar+4个navgation没有问题,在其中一个Controller里面跳转到新的tabbar+navgation。
问题1:
UITabBarController * tab = [[UITabBarController alloc]init];
TestCtl * testCtl = [[AdDialViewCtl alloc]init];
[tabVcs addObject: testCtl];
tab.viewControllers = tabVcs;
tab.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:tab animated:YES];
push过去发现,TestCtl这个控制器不能修改title。因为我push的是UITabBarController,所以设置self.navigationItem.title这个是没有用的。
问题2: 然后我把testCtl添加到navgation里面,发现又有新的问题出来了
UINavigationController * nav = [[UINavigationController alloc] initWithRootViewController: testCtl];
[tabVcs addObject: nav];
tab.viewControllers = tabVcs;
[self.navigationController pushViewController:tab animated:YES];
这样title可以设置,但是因为是init UINavigationController所以肯定没法pop回去。
但是看支付宝实现了这个效果。
pop不回去的原因确实是因为navigationController拿错了,我在代码上拿的是self的navigationController,也就是当前添加到TabbarController的ViewController的导航栏,这个导航栏是pop不回去的。
我们应该拿到push TabbarController的这个导航栏,代码如下:
UITabBarController * tabbarCtl = self.tabBarController;
UINavigationController * nav = tabbarCtl.navigationController;
这样就可以pop回去
网友评论